D8092: hghave: cache the result of gethgversion
Closed by commit rHG8607dc2aa686: hghave: cache the result of gethgversion (authored by jcristau). This revision was automatically updated to reflect the committed changes. REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D8092?vs=19985=19998 CHANGES SINCE LAST ACTION https://phab.mercurial-scm.org/D8092/new/ REVISION DETAIL https://phab.mercurial-scm.org/D8092 AFFECTED FILES tests/hghave.py CHANGE DETAILS diff --git a/tests/hghave.py b/tests/hghave.py --- a/tests/hghave.py +++ b/tests/hghave.py @@ -307,13 +307,21 @@ return False -def gethgversion(): +def _gethgversion(): m = matchoutput('hg --version --quiet 2>&1', br'(\d+)\.(\d+)') if not m: return (0, 0) return (int(m.group(1)), int(m.group(2))) +_hgversion = None +def gethgversion(): +global _hgversion +if _hgversion is None: +_hgversion = _gethgversion() +return _hgversion + + @checkvers( "hg", "Mercurial >= %s", list([(1.0 * x) / 10 for x in range(9, 99)]) ) To: jcristau, #hg-reviewers, marmoute, pulkit Cc: pulkit, marmoute, mercurial-devel ___ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
D8092: hghave: cache the result of gethgversion
jcristau added a comment. It fixes a longstanding issue in tests, it's not particularly urgent IMO. REPOSITORY rHG Mercurial CHANGES SINCE LAST ACTION https://phab.mercurial-scm.org/D8092/new/ REVISION DETAIL https://phab.mercurial-scm.org/D8092 To: jcristau, #hg-reviewers, marmoute Cc: pulkit, marmoute, mercurial-devel ___ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
D8092: hghave: cache the result of gethgversion
pulkit added a comment. This is fixing some debian packaging issue, so is it targeted for stable branch? REPOSITORY rHG Mercurial CHANGES SINCE LAST ACTION https://phab.mercurial-scm.org/D8092/new/ REVISION DETAIL https://phab.mercurial-scm.org/D8092 To: jcristau, #hg-reviewers, marmoute Cc: pulkit, marmoute, mercurial-devel ___ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
D8092: hghave: cache the result of gethgversion
marmoute added a comment. I can confirm the perf win: before: 10.687 seconds after 3.6.19 seconds REPOSITORY rHG Mercurial CHANGES SINCE LAST ACTION https://phab.mercurial-scm.org/D8092/new/ REVISION DETAIL https://phab.mercurial-scm.org/D8092 To: jcristau, #hg-reviewers Cc: marmoute, mercurial-devel ___ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
D8092: hghave: cache the result of gethgversion
jcristau created this revision. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers. REVISION SUMMARY hghave --test-features calls it 90 times, each one calling hg --version which takes a tenth of a second on my workstation, adding up to about 10s win on test-hghave.t. Fixes https://bugs.debian.org/939756 REPOSITORY rHG Mercurial BRANCH default REVISION DETAIL https://phab.mercurial-scm.org/D8092 AFFECTED FILES tests/hghave.py CHANGE DETAILS diff --git a/tests/hghave.py b/tests/hghave.py --- a/tests/hghave.py +++ b/tests/hghave.py @@ -307,13 +307,21 @@ return False -def gethgversion(): +def _gethgversion(): m = matchoutput('hg --version --quiet 2>&1', br'(\d+)\.(\d+)') if not m: return (0, 0) return (int(m.group(1)), int(m.group(2))) +_hgversion = None +def gethgversion(): +global _hgversion +if _hgversion is None: +_hgversion = _gethgversion() +return _hgversion + + @checkvers( "hg", "Mercurial >= %s", list([(1.0 * x) / 10 for x in range(9, 99)]) ) To: jcristau, #hg-reviewers Cc: mercurial-devel ___ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel