From: Carl Worth Date: Thu, 15 Oct 2009 16:04:31 +0000 (-0700) Subject: Change progress report to show "instantaneous" rate. Also print total time. X-Git-Tag: 0.1~850 X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=commitdiff_plain;h=5fbdbeb333b4fb8293092e8cb9f5b19da3e53ed5;hp=a2c467242ac646bb16638906dec1bd075e098674 Change progress report to show "instantaneous" rate. Also print total time. Instead of always showing the overall rate, we wait until the end to show that. Then, on incremental updates we show the rate over the last increment. This makes it much easier to actually watch what's happening, (and it's easy to see the efect of xapian's internal 10,000 document flush). --- diff --git a/notmuch-index-message.cc b/notmuch-index-message.cc index f16bd1ad..7610aa41 100644 --- a/notmuch-index-message.cc +++ b/notmuch-index-message.cc @@ -722,7 +722,8 @@ main (int argc, char **argv) GIOStatus gio_status; GError *error = NULL; int count; - struct timeval tv_start, tv_now; + struct timeval tv_start, tv_last, tv_now; + double elapsed; if (argc < 2) { usage (argv[0]); @@ -747,6 +748,7 @@ main (int argc, char **argv) count = 0; gettimeofday (&tv_start, NULL); + tv_last = tv_start; while (1) { gio_status = g_io_channel_read_line (channel, &filename, @@ -768,11 +770,18 @@ main (int argc, char **argv) if (count % 1000 == 0) { gettimeofday (&tv_now, NULL); printf ("Indexed %d messages (%g messages/second)\n", - count, count / ((tv_now.tv_sec - tv_start.tv_sec) + - (tv_now.tv_usec - tv_start.tv_usec) / 1e6)); + count, 1000 / ((tv_now.tv_sec - tv_last.tv_sec) + + (tv_now.tv_usec - tv_last.tv_usec) / 1e6)); + tv_last = tv_now; } } + gettimeofday (&tv_now, NULL); + elapsed = (tv_now.tv_sec - tv_start.tv_sec + + (tv_now.tv_usec - tv_start.tv_usec) / 1e6); + printf ("Completed indexing of %d messages in %g seconds (%g messages/second)\n", + count, elapsed, count / elapsed); + } catch (const Xapian::Error &error) { cerr << "A Xapian exception occurred: " << error.get_msg () << endl; exit (1);