From c3184acd2ea6353188c3abd0875b39694a5ba140 Mon Sep 17 00:00:00 2001 From: Varun Arora Date: Wed, 21 Mar 2018 11:36:52 -0700 Subject: [PATCH] [reporting][perf] report InferPrint time taken Summary: - InferPrint reports time stats only, logged in `reporting_stats/` as well as a `PerformanceStats` event with `stats_type: reporting` - Perf reporting can now be registered at one point (with desired start real and cpu times) and triggered later Reviewed By: dulmarod Differential Revision: D7332435 fbshipit-source-id: 2e17c7f --- infer/src/backend/InferPrint.ml | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/infer/src/backend/InferPrint.ml b/infer/src/backend/InferPrint.ml index 3bf356cea..5edee797b 100644 --- a/infer/src/backend/InferPrint.ml +++ b/infer/src/backend/InferPrint.ml @@ -866,11 +866,6 @@ let get_summary_iterator () = iterate -let register_perf_stats_report () = - let filename = F.sprintf "%s.json" Config.perf_stats_prefix in - PerfStats.register_report_at_exit filename PerfStats.Reporting - - (** Although the out_file is an Option type, the None option is strictly meant for the logs format_kind, and all other formats should contain an outfile value. *) let mk_format format_kind fname = @@ -969,6 +964,17 @@ let pp_summary_and_issues formats_by_report_kind issue_formats = finalize_and_close_files formats_by_report_kind stats +let register_perf_stats_report () = + let fname = F.sprintf "%s.json" Config.perf_stats_prefix in + let rtime_span, initial_times = (Mtime_clock.counter (), Unix.times ()) in + PerfStats.register_report (PerfStats.Time (rtime_span, initial_times)) fname PerfStats.Reporting + + +let report_perf_stats () = + let fname = F.sprintf "%s.json" Config.perf_stats_prefix in + PerfStats.get_reporter fname PerfStats.Reporting () + + let main ~report_json = let issue_formats = init_issues_format_list report_json in let formats_by_report_kind = @@ -979,8 +985,9 @@ let main ~report_json = in register_perf_stats_report () ; init_files formats_by_report_kind ; - match Config.from_json_report with + ( match Config.from_json_report with | Some fname -> pp_json_report_by_report_kind formats_by_report_kind fname | None -> - pp_summary_and_issues formats_by_report_kind issue_formats + pp_summary_and_issues formats_by_report_kind issue_formats ) ; + report_perf_stats ()