Alexander Suvorov
eee6b26e5d
Optimize endpoint and selector sorting algorithms
...
This change significantly improves compression speed.
Explanation:
The main ideas used for the endpoint and selector sorting optimization:
- unpacked color and alpha endpoints can be cached
- pixel selectors can be processed in groups, while the intermediate error results for those groups can be precalculated
- instead of maintaining the mask of the processed elements, the remaining elements can be reorganized to form a continuous block on each iteration (the last remaining element is moved into the position of the processed element)
- after optimization, endpoint sorting works significantly faster than endpoint reordering, so the overall performance can be improved by moving selector optimization into the endpoint sorting thread
Testing:
The modified algorithm has been tested on the Kodak test set using 64-bit build with default settings (running on Windows 10, i7-4790, 3.6GHz). All the decompressed test images are identical to the images being compressed and decompressed using original version of Crunch.
[Compressing Kodak set without mipmaps]
Original: 1582222 bytes / 28.863 sec
Modified: 1482780 bytes / 14.564 sec
Improvement: 6.28% (compression ratio) / 49.54% (compression time)
[Compressing Kodak set with mipmaps]
Original: 2065243 bytes / 36.968 sec
Modified: 1931586 bytes / 19.717 sec
Improvement: 6.47% (compression ratio) / 46.66% (compression time)
2017-06-14 14:56:41 +02:00
..
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-06-14 14:56:41 +02:00
2017-06-14 14:56:41 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2011-12-27 21:18:07 +00:00
2017-05-18 13:44:04 +02:00
2017-05-18 13:44:04 +02:00
2017-05-18 13:44:04 +02:00
2017-05-18 13:44:04 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-06-07 16:55:41 +02:00
2017-06-07 16:55:41 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 13:16:13 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2012-04-26 07:14:21 +00:00
2017-04-26 13:16:13 +02:00
2017-06-09 19:14:41 +02:00
2017-06-09 19:14:41 +02:00
2017-04-26 13:16:13 +02:00
2017-04-26 13:16:13 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2011-12-27 21:18:07 +00:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2011-12-27 21:18:07 +00:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2017-04-26 11:41:07 +02:00
2012-11-25 08:41:25 +00:00