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 |
|---|---|---|
| .. | ||
| ppc | Loading commit data... | |
| unix | Loading commit data... | |
| win32 | Loading commit data... | |
| blob.c | Loading commit data... | |
| blob.h | Loading commit data... | |
| bswap.h | Loading commit data... | |
| cache.c | Loading commit data... | |
| cache.h | Loading commit data... | |
| cc-compat.h | Loading commit data... | |
| commit.c | Loading commit data... | |
| commit.h | Loading commit data... | |
| common.h | Loading commit data... | |
| config.c | Loading commit data... | |
| config.h | Loading commit data... | |
| config_file.c | Loading commit data... | |
| delta-apply.c | Loading commit data... | |
| delta-apply.h | Loading commit data... | |
| dir.h | Loading commit data... | |
| errors.c | Loading commit data... | |
| filebuf.c | Loading commit data... | |
| filebuf.h | Loading commit data... | |
| fileops.c | Loading commit data... | |
| fileops.h | Loading commit data... | |
| hash.c | Loading commit data... | |
| hash.h | Loading commit data... | |
| hashtable.c | Loading commit data... | |
| hashtable.h | Loading commit data... | |
| index.c | Loading commit data... | |
| index.h | Loading commit data... | |
| map.h | Loading commit data... | |
| netops.c | Loading commit data... | |
| netops.h | Loading commit data... | |
| object.c | Loading commit data... | |
| odb.c | Loading commit data... | |
| odb.h | Loading commit data... | |
| odb_loose.c | Loading commit data... | |
| odb_pack.c | Loading commit data... | |
| oid.c | Loading commit data... | |
| path.c | Loading commit data... | |
| path.h | Loading commit data... | |
| pkt.c | Loading commit data... | |
| posix.c | Loading commit data... | |
| posix.h | Loading commit data... | |
| pqueue.c | Loading commit data... | |
| pqueue.h | Loading commit data... | |
| refs.c | Loading commit data... | |
| refs.h | Loading commit data... | |
| refspec.c | Loading commit data... | |
| refspec.h | Loading commit data... | |
| remote.c | Loading commit data... | |
| remote.h | Loading commit data... | |
| repository.c | Loading commit data... | |
| repository.h | Loading commit data... | |
| revwalk.c | Loading commit data... | |
| sha1.c | Loading commit data... | |
| sha1.h | Loading commit data... | |
| sha1_lookup.c | Loading commit data... | |
| sha1_lookup.h | Loading commit data... | |
| signature.c | Loading commit data... | |
| signature.h | Loading commit data... | |
| t03-data.h | Loading commit data... | |
| tag.c | Loading commit data... | |
| tag.h | Loading commit data... | |
| thread-utils.c | Loading commit data... | |
| thread-utils.h | Loading commit data... | |
| transport.c | Loading commit data... | |
| transport.h | Loading commit data... | |
| transport_git.c | Loading commit data... | |
| transport_local.c | Loading commit data... | |
| tree.c | Loading commit data... | |
| tree.h | Loading commit data... | |
| tsort.c | Loading commit data... | |
| util.c | Loading commit data... | |
| util.h | Loading commit data... | |
| vector.c | Loading commit data... | |
| vector.h | Loading commit data... |