timsort.h


Log

Author Commit Date CI Message
Jared Yanovich 2a350ee9 2019-09-30T17:04:54 Large batch of typo fixes Closes #109.
Nick Wellnhofer f9fce963 2019-05-16T21:16:01 Fix unsigned integer overflow It's defined behavior but -fsanitize=unsigned-integer-overflow is useful to discover bugs.
Jérôme Duval 9948a9a3 2019-04-05T06:34:59 timsort.h: support older GCCs cherry-pick upstream pull request: __builtin_clzll isn't available on older GCCs
Nick Wellnhofer 5e986e3b 2017-10-21T15:09:33 Fix mixed decls and code in timsort.h
Nick Wellnhofer bec3c17f 2017-10-12T15:15:58 Upgrade timsort.h to latest revision Upgrade timsort.h to revision 05fd77bfec049ce8b7c408c4d3dd2d51ee061a15 from https://github.com/swenson/sort Removed all code unrelated to Timsort and made minor adjustments for cross-platform compatibility.
Nick Wellnhofer e3890546 2017-10-09T00:20:01 Fix the Windows header mess Don't include windows.h and wsockcompat.h from config.h but only when needed. Don't define _WINSOCKAPI_ manually. This was apparently done to stop windows.h from including winsock.h which is a problem if winsock2.h wasn't included first. But on MinGW, this causes compiler warnings. Define WIN32_LEAN_AND_MEAN instead which has the same effect. Always use the compiler-defined _WIN32 macro instead of WIN32.
Nick Wellnhofer 94613f64 2016-08-22T12:16:31 Remove unused variables
Nick Wellnhofer c2545cbb 2016-08-22T11:44:18 Fix format string warnings Also fixes bug #768199: https://bugzilla.gnome.org/show_bug.cgi?id=768199
Christopher Swenson 9b987f8c 2015-02-27T14:55:49 Fix timsort invariant loop re: Envisage article See http://envisage-project.eu/proving-android-java-and-python-sorting-algorithm-is-broken-and-how-to-fix-it/ We use a "runLen" array of size 128, so it should be nearly impossible to have our implementation overflow. But in any case, the fix is relatively simple -- checking two extra conditions in the invariant calculation. I also took this opportunity to remove some redundancy in the left/right merge logic in the invariant loop.
Patrick Monnerat 3a76bfed 2013-12-12T15:01:53 Portability fix increase internal use of a portability macro
Daniel Veillard 4ea74a44 2012-10-29T10:27:18 Fix a portability issue for GCC < 3.4.0
Daniel Richard bbe19451 2012-09-18T11:15:06 Windows build fixes Building 2.9.0 on MSVC7.1 was failing This is because HAVE_CONFIG_H is not #defined The patch addresses the above, adds testrecurse.exe and the standard "make check" suite of tests to the MSVC makefile, and also fixes the following (MSVC7.1) warnings: buf.c(674) : warning C4028: formal parameter 1 different from declaration libxml2\timsort.h(71) : warning C4028: formal parameter 1 different from declaration
Daniel Veillard 7651606f 2012-09-11T14:02:08 Various cleanups to avoid compiler warnings
Rob Richards 236ea1ea 2012-08-27T11:56:07 fix builds not having stdint.h
Vojtech Fried 3e031b7d 2012-08-24T16:52:44 Switching XPath node sorting to Timsort I use libxml xpath engine on quite large (and mostly "flat") xml files. It seems that Shellsort, that is used in xmlXPathNodeSetSort is a performance bottleneck for my case. I have read some posts about sorting in libxml in the libxml archive, but I agree that qsort was not the way to go. I experimented with Timsort instead and my results were good for me. For about 10000 nodes, my test was about 5x faster with Timsort, for 1000 nodes about 10% faster, for small data files, the difference was not measurable. * timsort.h: the algorithm, kept in a separate header * xpath.c: plug in the new algorithm in xmlXPathNodeSetSort * Makefile.am: add the header to the EXTRA_DIST * doc/apibuild.py: avoid indexing the new header