##// END OF EJS Templates
xdiff: reduce indent heuristic overhead...
xdiff: reduce indent heuristic overhead Adds some threshold to avoid expensive cases, like: ``` #!python open('a', 'w').write(" \n" * 1000000) open('b', 'w').write(" \n" * 1000001) ``` The indent heuristic is O(N * 20) (N = 1000000) for the above case, and makes diff much slower. Before this patch (system git 2.14.2): ``` git diff --no-indent-heuristic a b 0.21s user 0.03s system 100% cpu 0.239 total git diff --indent-heuristic a b 0.77s user 0.02s system 99% cpu 0.785 total ``` After this patch (git 2fc74f41, with xdiffi.c patched): ``` # with the changed xdiffi.c git diff --indent-heuristic a b 0.16s user 0.01s system 90% cpu 0.188 total git diff --no-indent-heuristic a b 0.18s user 0.01s system 99% cpu 0.192 total ``` Now turning on indent-heuristic has no visible impact on performance. Differential Revision: https://phab.mercurial-scm.org/D2601
Jun Wu -
r36692:c4207922 default
Show More
Name Size Modified Last Commit Author
/ contrib
benchmarks
chg
debian
docker
fuzz
hgsh
macosx
plan9
python-zstandard
vagrant
vim
win32
wix
Makefile.python Loading ...
all-revsets.txt Loading ...
asv.conf.json Loading ...
base-revsets.txt Loading ...
bash_completion Loading ...
bdiff-torture.py Loading ...
build-linux-wheels.sh Loading ...
builddeb Loading ...
buildrpm Loading ...
casesmash.py Loading ...
check-code.py Loading ...
check-commit Loading ...
check-config.py Loading ...
check-py3-compat.py Loading ...
clang-format-blacklist Loading ...
debugcmdserver.py Loading ...
debugshell.py Loading ...
dirstatenonnormalcheck.py Loading ...
dockerdeb Loading ...
dockerlib.sh Loading ...
dockerrpm Loading ...
dumprevlog Loading ...
editmerge Loading ...
editmergeps.bat Loading ...
editmergeps.ps1 Loading ...
fixpax.py Loading ...
genosxversion.py Loading ...
hg-ssh Loading ...
hg-test-mode.el Loading ...
hgclient.py Loading ...
hgk Loading ...
hgperf Loading ...
hgweb.fcgi Loading ...
hgweb.wsgi Loading ...
import-checker.py Loading ...
linux-wheel-centos5-blacklist Loading ...
logo-droplets.svg Loading ...
memory.py Loading ...
mercurial.el Loading ...
mercurial.spec Loading ...
mq.el Loading ...
packagelib.sh Loading ...
perf.py Loading ...
phabricator.py Loading ...
pylintrc Loading ...
python-hook-examples.py Loading ...
python3-ratchet.py Loading ...
python3-whitelist Loading ...
revsetbenchmarks.py Loading ...
showstack.py Loading ...
simplemerge Loading ...
synthrepo.py Loading ...
tcsh_completion Loading ...
tcsh_completion_build.sh Loading ...
undumprevlog Loading ...
xml.rnc Loading ...
zsh_completion Loading ...