##// END OF EJS Templates
obsolete: avoid slow, generic date parsing...
obsolete: avoid slow, generic date parsing Simple profiling of `hg log -r .` revealed ~18,000 calls to mercurial.i18n.gettext() on the author's repository. The culprit was 3 _() calls in util.parsedate() multiplied by ~6000 obsmarkers originating from the parsing of obsmarkers. Changing the obsmarker code to parse the stored format of dates instead of going through a generic path eliminates these gettext() lookups and makes `hg log -r .` execute ~10% faster on the author's repo. The performance gain is proportional to the number of obsmarkers. The author attempted to patch util.parsedate() to avoid the gettext() lookups. However, that code is whacky and the author is jet lagged, so the approach was not attempted.
Gregory Szorc -
r22309:a65697c3 default
Show More
Name Size Modified Last Commit Author
/ mercurial
help
hgweb
httpclient
pure
templates
__init__.py Loading ...
ancestor.py Loading ...
archival.py Loading ...
base85.c Loading ...
bdiff.c Loading ...
bookmarks.py Loading ...
branchmap.py Loading ...
bundle2.py Loading ...
bundlerepo.py Loading ...
byterange.py Loading ...
changegroup.py Loading ...
changelog.py Loading ...
cmdutil.py Loading ...
commands.py Loading ...
commandserver.py Loading ...
config.py Loading ...
context.py Loading ...
copies.py Loading ...
dagparser.py Loading ...
dagutil.py Loading ...
demandimport.py Loading ...
dicthelpers.py Loading ...
diffhelpers.c Loading ...
dirs.c Loading ...
dirstate.py Loading ...
discovery.py Loading ...
dispatch.py Loading ...
encoding.py Loading ...
error.py Loading ...
exchange.py Loading ...
exewrapper.c Loading ...
extensions.py Loading ...
fancyopts.py Loading ...
filelog.py Loading ...
filemerge.py Loading ...
fileset.py Loading ...
formatter.py Loading ...
graphmod.py Loading ...
hbisect.py Loading ...
help.py Loading ...
hg.py Loading ...
hook.py Loading ...
httpconnection.py Loading ...
httppeer.py Loading ...
i18n.py Loading ...
ignore.py Loading ...
keepalive.py Loading ...
localrepo.py Loading ...
lock.py Loading ...
lsprof.py Loading ...
lsprofcalltree.py Loading ...
mail.py Loading ...
manifest.py Loading ...
match.py Loading ...
mdiff.py Loading ...
merge.py Loading ...
minirst.py Loading ...
mpatch.c Loading ...
node.py Loading ...
obsolete.py Loading ...
osutil.c Loading ...
parser.py Loading ...
parsers.c Loading ...
patch.py Loading ...
pathencode.c Loading ...
pathutil.py Loading ...
peer.py Loading ...
phases.py Loading ...
posix.py Loading ...
pushkey.py Loading ...
pvec.py Loading ...
py3kcompat.py Loading ...
repair.py Loading ...
repoview.py Loading ...
revlog.py Loading ...
revset.py Loading ...
scmposix.py Loading ...
scmutil.py Loading ...
scmwindows.py Loading ...
setdiscovery.py Loading ...
similar.py Loading ...
simplemerge.py Loading ...
sshpeer.py Loading ...
sshserver.py Loading ...
sslutil.py Loading ...
statichttprepo.py Loading ...
store.py Loading ...
strutil.py Loading ...
subrepo.py Loading ...
tagmerge.py Loading ...
tags.py Loading ...
templatefilters.py Loading ...
templatekw.py Loading ...
templater.py Loading ...
transaction.py Loading ...
treediscovery.py Loading ...
ui.py Loading ...
unionrepo.py Loading ...
url.py Loading ...
util.h Loading ...
util.py Loading ...
verify.py Loading ...
win32.py Loading ...
windows.py Loading ...
wireproto.py Loading ...
worker.py Loading ...