Drop the GLibc implementation of Merge Sort and replace it with Timsort. The algorithm has been tuned to work on arrays of pointers (void **), so there's no longer a need to abstract the byte-width of each element in the array. All the comparison callbacks now take pointers-to-elements, not pointers-to-pointers, so there's now one less level of dereferencing. E.g. int index_cmp(const void *a, const void *b) { - const git_index_entry *entry_a = *(const git_index_entry **)(a); + const git_index_entry *entry_a = (const git_index_entry *)(a); The result is up to a 40% speed-up when sorting vectors. Memory usage remains lineal. A new `bsearch` implementation has been added, whose callback also supplies pointer-to-elements, to uniform the Vector API again.
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
resources | Loading commit data... | |
.gitignore | Loading commit data... | |
NAMING | Loading commit data... | |
t00-core.c | Loading commit data... | |
t01-data.h | Loading commit data... | |
t01-rawobj.c | Loading commit data... | |
t02-data.h | Loading commit data... | |
t02-objread.c | Loading commit data... | |
t02-oids.h | Loading commit data... | |
t03-objwrite.c | Loading commit data... | |
t04-commit.c | Loading commit data... | |
t05-revwalk.c | Loading commit data... | |
t06-index.c | Loading commit data... | |
t07-hashtable.c | Loading commit data... | |
t08-tag.c | Loading commit data... | |
t09-tree.c | Loading commit data... | |
t10-refs.c | Loading commit data... | |
t12-repo.c | Loading commit data... | |
t13-threads.c | Loading commit data... | |
t15-config.c | Loading commit data... | |
t16-remotes.c | Loading commit data... | |
test_helpers.c | Loading commit data... | |
test_helpers.h | Loading commit data... | |
test_lib.c | Loading commit data... | |
test_lib.h | Loading commit data... | |
test_main.c | Loading commit data... | |
tests.supp | Loading commit data... |