| 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... |