Name |
Last commit
|
Last update |
---|---|---|
deps/zlib | ||
examples | ||
include | ||
src | ||
tests | ||
.HEADER | ||
.gitattributes | ||
.gitignore | ||
CMakeLists.txt | ||
CONVENTIONS | ||
COPYING | ||
Makefile.embed | ||
README.md | ||
api.docurium | ||
git.git-authors | ||
libgit2.pc.in |
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 |
---|---|---|
deps/zlib | Loading commit data... | |
examples | Loading commit data... | |
include | Loading commit data... | |
src | Loading commit data... | |
tests | Loading commit data... | |
.HEADER | Loading commit data... | |
.gitattributes | Loading commit data... | |
.gitignore | Loading commit data... | |
CMakeLists.txt | Loading commit data... | |
CONVENTIONS | Loading commit data... | |
COPYING | Loading commit data... | |
Makefile.embed | Loading commit data... | |
README.md | Loading commit data... | |
api.docurium | Loading commit data... | |
git.git-authors | Loading commit data... | |
libgit2.pc.in | Loading commit data... |