Mercurial > hg
view tests/test-basic.t @ 20836:a8b4541bb961
grep: reuse the first "util.binary()" result for efficiency
Before this patch, to check whether the file in the specified revision
is binary or not, "util.binary()" is invoked via internal function
"binary()" of "hg grep" once per a line of "hg grep" output, even
though binary-ness is not changed in the same file.
This patch reuses the first "util.binary()" invocation result by
annotating internal function "binary()" with "@util.cachefunc".
Performance improvement measured by "hgperf grep -r 88d8e568add1 vfs
mercurial/scmutil.py":
before this patch:
! wall 0.024000 comb 0.015600 user 0.015600 sys 0.000000 (best of 118)
after this patch:
! wall 0.023000 comb 0.015600 user 0.015600 sys 0.000000 (best of 123)
Status of recent(88d8e568add1) "mercurial/scmutil.py":
# of lines: 919 (may affect cost of search)
# of bytes: 29633 (may affect cost of "util.binary()")
# of matches: 22 (may affect frequency of "util.binary()")
author | FUJIWARA Katsunori <foozy@lares.dti.ne.jp> |
---|---|
date | Sat, 15 Feb 2014 19:52:36 +0900 |
parents | a3ca1d032926 |
children | 10abc3a5c6b2 |
line wrap: on
line source
Create a repository: $ hg config defaults.backout=-d "0 0" defaults.commit=-d "0 0" defaults.shelve=--date "0 0" defaults.tag=-d "0 0" ui.slash=True ui.interactive=False $ hg init t $ cd t Make a changeset: $ echo a > a $ hg add a $ hg commit -m test This command is ancient: $ hg history changeset: 0:acb14030fe0a tag: tip user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: test Verify that updating to revision 0 via commands.update() works properly $ cat <<EOF > update_to_rev0.py > from mercurial import ui, hg, commands > myui = ui.ui() > repo = hg.repository(myui, path='.') > commands.update(myui, repo, rev=0) > EOF $ hg up null 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ python ./update_to_rev0.py 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg identify -n 0 Poke around at hashes: $ hg manifest --debug b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 644 a $ hg cat a a Verify should succeed: $ hg verify checking changesets checking manifests crosschecking files in changesets and manifests checking files 1 files, 1 changesets, 1 total revisions At the end... $ cd ..