This is the mail archive of the libc-help@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Considering merge optimizations from Timsort in __move_merge_adaptive, __move_merge_adaptive_backward


Hello all,

I've been implementing a new version of Timsort in C++ using more standard facilities.  One thing I've come across which adds a divide between a larger codebase and faster code is the implementation of std::inplace_merge with sufficient memory.  This goes to the specific functions  __move_merge_adaptive, and __move_merge_adaptive_backward.  In particular, there is an optimization where each insertion searches for the maximum number of elements it can move.  A brief in context explanation is here: https://en.wikipedia.org/wiki/Timsort#Individual_merges .  Would such a trick have a place in glibc or is the overhead likely too great in the general case?


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]