Print summary timing information at the end of encoder_example runs.
authorRalph Giles <giles@xiph.org>
Wed, 9 Feb 2011 01:45:41 +0000 (01:45 +0000)
committerRalph Giles <giles@xiph.org>
Wed, 9 Feb 2011 01:45:41 +0000 (01:45 +0000)
This is helpful for casual benchmarking and performance comparision.
We use the very portable time.h clock() call and the beginning and
end of the main function and calculate the average rate in millions
of pixels per second and fraction of realtime. Unfortunately clock()
isn't accurate enough to be useful for per-frame statistics.

svn path=/trunk/theora/; revision=17820

examples/encoder_example.c

index 09e1994..9083392 100644 (file)
@@ -1307,6 +1307,10 @@ int main(int argc,char *argv[]){
   int twopass=0;
   int passno;
 
+  clock_t clock_start=clock();
+  clock_t clock_end;
+  double elapsed;
+
 #ifdef _WIN32 /* We need to set stdin/stdout to binary mode. Damn windows. */
   /* if we were reading/writing a file, it would also need to in
      binary mode, eg, fopen("file.wav","wb"); */
@@ -1867,8 +1871,17 @@ int main(int argc,char *argv[]){
   if(outfile && outfile!=stdout)fclose(outfile);
   if(twopass_file)fclose(twopass_file);
 
+  clock_end=clock();
+  elapsed=(clock_end-clock_start)/(double)CLOCKS_PER_SEC;
+
   if(!quiet){
-    fprintf(stderr,"\r   \ndone.\n\n");
+    fprintf(stderr,"\r   \n");
+    fprintf(stderr,"      %lld frames in %.3lf seconds: %.3lf Mpixel/s",
+      (long long)frames,elapsed,
+      (double)1e-6*frames*frame_w*frame_h/elapsed);
+    fprintf(stderr," %.2lfx",
+      (double)frames*video_fps_d/(elapsed*video_fps_n));
+    fprintf(stderr,"\ndone.\n\n");
   }
 
   return(0);