I have spotted the biggest bottleneck in "bdiff.c". Actually it was
pretty easy to find after I recompiled the python interpreter and
mercurial for profiling.
In "bdiff.c" function "equatelines" allocates the minimum hash table
size, which can lead to tons of collisions. I introduced an
"overcommit" factor of 16, this is, I allocate 16 times more memory
than the minimum value. Overcommiting 128 times does not improve the
performance over the 16-times case.
syntax: glob
*.elc
*.orig
*.rej
*~
*.mergebackup
*.o
*.so
*.pyc
*.swp
*.prof
tests/.coverage*
tests/annotated
tests/*.err
build
contrib/hgsh/hgsh
dist
doc/*.[0-9]
doc/*.[0-9].gendoc.txt
doc/*.[0-9].{x,ht}ml
MANIFEST
patches
mercurial/__version__.py
.DS_Store
syntax: regexp
^\.pc/
Output/Mercurial-[0-9.]*.exe