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.
=======================
Should fail if no patches applied
No patches applied
No patches applied
=======================
Should display 'First commit message'
description:
First commit message
=======================
Should display 'Second commit message'
description:
Second commit message
=======================
Should display 'Third commit message\n This is the 3rd log message'
description:
Third commit message
This is the 3rd log message
=======================
Should display 'Fifth commit message\n This is the 5th log message'
description:
Fifth commit message