Take measurements of t0 and ref_time after enable_counters(), so that
they only measure the time consumed when the counters are enabled.

Signed-off-by: Song Liu <songliubrav...@fb.com>
---
 tools/perf/builtin-stat.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index 92696373da994..d030c3a49a8e4 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -931,15 +931,15 @@ static int __run_perf_stat(int argc, const char **argv, 
int run_idx)
        /*
         * Enable counters and exec the command:
         */
-       t0 = rdclock();
-       clock_gettime(CLOCK_MONOTONIC, &ref_time);
-
        if (forks) {
                evlist__start_workload(evsel_list);
                err = enable_counters();
                if (err)
                        return -1;
 
+               t0 = rdclock();
+               clock_gettime(CLOCK_MONOTONIC, &ref_time);
+
                if (interval || timeout || 
evlist__ctlfd_initialized(evsel_list))
                        status = dispatch_events(forks, timeout, interval, 
&times);
                if (child_pid != -1) {
@@ -960,6 +960,10 @@ static int __run_perf_stat(int argc, const char **argv, 
int run_idx)
                err = enable_counters();
                if (err)
                        return -1;
+
+               t0 = rdclock();
+               clock_gettime(CLOCK_MONOTONIC, &ref_time);
+
                status = dispatch_events(forks, timeout, interval, &times);
        }
 
-- 
2.30.2

Reply via email to