# HG changeset patch # User Gregory Szorc <gregory.sz...@gmail.com> # Date 1489454202 25200 # Mon Mar 13 18:16:42 2017 -0700 # Node ID 3b997adb7efece7395fb585a70b2d70522626648 # Parent f6f1f5efe05f4e3737dc198284f548e31a616f4b perf: perform a garbage collection before each iteration
Currently, no explicit garbage collection is performed when running the microbenchmarks in `hg perf`. I think this is wrong because garbage collection can have a significant impact on execution times. And, if gc is triggered via the default heuristics, it will fire effectively randomly during subsequent benchmark iterations due to variable amount of garbage left over from previous runs. Running a gc before invoking the measured function will help ensure state is more consistent across all iterations. diff --git a/contrib/perf.py b/contrib/perf.py --- a/contrib/perf.py +++ b/contrib/perf.py @@ -20,6 +20,7 @@ from __future__ import absolute_import import functools +import gc import os import random import sys @@ -189,6 +190,7 @@ def stub_timer(fm, func, title=None): func() def _timer(fm, func, title=None): + gc.collect() results = [] begin = util.timer() count = 0 _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel