Commit Graph

8 Commits

Author SHA1 Message Date
Jeffrey Bush 1cfac269a8 Finally fixed #4. The problem is that on Windows the stack is 4-byte aligned and GCC assumes (for some optimizations) 16-byte alignment. A GCC stack alignment fix was added to functions that needed it.
Also increased XPRESS Huffman max compressed size which helps #14.
2015-03-19 20:52:50 -07:00
Jeffrey Bush 66e93e7581 Fixing some warnings with gcc -Wextra -pedantic -Wuninitialized. The remaining warnings are mostly about variadic macros. 2015-03-18 12:56:44 -07:00
Jeffrey Bush e877ca5554 Corrected XPRESS Huffman compression to max size and added checks to make sure it always stays under the max size. In addition many other changes were made for improved performance. 2015-03-17 22:39:05 -07:00
Jeffrey Bush 3b3e29ed69 Adding comment about bzip2 inspiration and removing sorting library. 2015-03-13 18:32:35 -07:00
Jeffrey Bush 7b7ed8cbf4 Completely changed the Huffman encoder to use an algorithm inspired by bzip2. This increases compression speed by more than 100%! That is its twice as fast! Downside is that compression ratio is slightly worse (but just barely: 32.792% to 32.853% or 167kb in 269MB). It also uses less stack (total 17kb). 2015-03-13 18:25:24 -07:00
Jeffrey Bush 345d9752b4 Improved the package-merge algorithm on the Huffman Encoder to use stack memory (its a lot of it - 519 kb now!). This improves its speed quite a bit (compression speed increases by 25%). 2015-03-13 18:20:07 -07:00
Jeffrey Bush 32a8ce209b Found which loop was causing the access violation with GCC tree-vectorization and put it into the source so tree-vectorization is not disabled globally. Also improved Huffman encoder slightly, mainly by changing merge sort to use insertion sort when "small". 2015-03-11 20:01:04 -07:00
Jeffrey Bush 62e73cc836 Reorganized code some more to allow it to be easier to bundle into other libraries and fixed some includes. 2015-02-12 12:29:53 -08:00