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).
This commit is contained in:
Carl Worth 2009-10-15 09:04:31 -07:00
parent a2c467242a
commit 5fbdbeb333

View file

@ -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);