]> rtime.felk.cvut.cz Git - can-benchmark.git/blobdiff - latester/latester.c
latester: Add statistics about data out of histogram range
[can-benchmark.git] / latester / latester.c
index 8b1fb866c21fff7e0c0b1cbf10ba205dd99bd1fb..72e123b25af1383fb112aeb88ca162c18c53bae5 100644 (file)
@@ -865,6 +865,7 @@ int main(int argc, const char *argv[])
                fclose(opt.f_msgs);
 
        if (opt.f_stat) {
+               struct histogram_stats hs;
                fprintf(opt.f_stat, "cmdline='");
                for (i=0; i<argc; i++)
                        fprintf(opt.f_stat, "%s%s", argv[i], i < argc-1 ? " " : "");
@@ -872,7 +873,7 @@ int main(int argc, const char *argv[])
 
                timespec_subtract(&diff, &stats.tac, &stats.tic);
                fprintf(opt.f_stat, "duration=%s # seconds\n", tstamp_str(NULL, &diff));
-       
+
                fprintf(opt.f_stat, "sent=%d\n", count);
                fprintf(opt.f_stat, "overrun=%d\n", stats.overrun);
                if (stats.overrun && !opt.quiet)
@@ -890,6 +891,14 @@ int main(int argc, const char *argv[])
                if (stats.timeouts && !opt.quiet)
                        printf("invalid_frame=%d\n", stats.timeouts);
 
+               histogram_stats(&histogram_gw, &hs);
+               double avg = hs.count ? (double)hs.sum/hs.count : 0;
+               fprintf(opt.f_stat, "avg=%g\n", avg);
+               fprintf(opt.f_stat, "out_of_range_below=%d\n", hs.below);
+               fprintf(opt.f_stat, "out_of_range_above=%d\n", hs.above);
+               for (i = 0; i <= 20; i++)
+                       fprintf(opt.f_stat, "percentile%d=%d\n", i*5, hs.percentile[i*5]);
+
                fclose(opt.f_stat);
        }