lizard icon indicating copy to clipboard operation
lizard copied to clipboard

Optimization makes a difference

Open tansy opened this issue 9 months ago • 2 comments

Optimization makes a difference

Interesting thing - there is significant difference between -O2 and -O3 optimization (GCC) on Intel, and theoretically better optimization (-O3) turnes out worse.

Z:\> lzbench-2.0-liz-O2_w64.exe -t6,3 -o1c4 -elizard silesia.tar

| Compressor name         | Compression| Decompress.| Compr. size | Ratio | Filename   |
| ---------------         | -----------| -----------| ----------- | ----- | ---------- |
| memcpy                  | 18803 MB/s | 17521 MB/s |   211947520 |100.00 | silesia.tar|
| lizard 2.1 -10          |   825 MB/s |  6118 MB/s |   103402971 | 48.79 | silesia.tar|
| lizard 2.1 -11          |   563 MB/s |  5971 MB/s |    93861621 | 44.29 | silesia.tar|
| lizard 2.1 -12          |   277 MB/s |  5781 MB/s |    86232422 | 40.69 | silesia.tar|
| lizard 2.1 -13          |   184 MB/s |  5802 MB/s |    83773119 | 39.53 | silesia.tar|
| lizard 2.1 -14          |   164 MB/s |  5878 MB/s |    82205976 | 38.79 | silesia.tar|
| lizard 2.1 -15          |   143 MB/s |  5925 MB/s |    81187330 | 38.31 | silesia.tar|
| lizard 2.1 -16          |   105 MB/s |  5790 MB/s |    79372512 | 37.45 | silesia.tar|
| lizard 2.1 -17          |  51.1 MB/s |  5887 MB/s |    78041714 | 36.82 | silesia.tar|
| lizard 2.1 -18          |  11.5 MB/s |  5949 MB/s |    77586984 | 36.61 | silesia.tar|
| lizard 2.1 -19          |  8.33 MB/s |  6008 MB/s |    77416400 | 36.53 | silesia.tar|
| lizard 2.1 -20          |   654 MB/s |  3964 MB/s |    96924204 | 45.73 | silesia.tar|
| lizard 2.1 -21          |   381 MB/s |  3984 MB/s |    89239174 | 42.10 | silesia.tar|
| lizard 2.1 -22          |   296 MB/s |  3902 MB/s |    84866725 | 40.04 | silesia.tar|
| lizard 2.1 -23          |   116 MB/s |  4082 MB/s |    81052209 | 38.24 | silesia.tar|
| lizard 2.1 -24          |  59.1 MB/s |  4068 MB/s |    78170875 | 36.88 | silesia.tar|
| lizard 2.1 -25          |  38.2 MB/s |  4065 MB/s |    75131286 | 35.45 | silesia.tar|
| lizard 2.1 -26          |  10.4 MB/s |  4181 MB/s |    72459161 | 34.19 | silesia.tar|
| lizard 2.1 -27          |  7.12 MB/s |  4175 MB/s |    70447615 | 33.24 | silesia.tar|
| lizard 2.1 -28          |  4.22 MB/s |  4240 MB/s |    69762972 | 32.92 | silesia.tar|
| lizard 2.1 -29          |  3.59 MB/s |  4117 MB/s |    68694227 | 32.41 | silesia.tar|


Z:\> lzbench-2.0-liz-O3_w64.exe -t6,3 -o1c4 -elizard silesia.tar

| Compressor name         | Compression| Decompress.| Compr. size | Ratio | Filename   |
| ---------------         | -----------| -----------| ----------- | ----- | ---------- |
| memcpy                  | 18805 MB/s | 17398 MB/s |   211947520 |100.00 | silesia.tar|
| lizard 2.1 -10          |   782 MB/s |  4536 MB/s |   103402971 | 48.79 | silesia.tar|
| lizard 2.1 -11          |   541 MB/s |  4300 MB/s |    93861621 | 44.29 | silesia.tar|
| lizard 2.1 -12          |   290 MB/s |  4199 MB/s |    86232422 | 40.69 | silesia.tar|
| lizard 2.1 -13          |   187 MB/s |  4241 MB/s |    83773119 | 39.53 | silesia.tar|
| lizard 2.1 -14          |   166 MB/s |  4310 MB/s |    82205976 | 38.79 | silesia.tar|
| lizard 2.1 -15          |   145 MB/s |  4335 MB/s |    81187330 | 38.31 | silesia.tar|
| lizard 2.1 -16          |   105 MB/s |  4183 MB/s |    79372512 | 37.45 | silesia.tar|
| lizard 2.1 -17          |  50.6 MB/s |  4247 MB/s |    78041714 | 36.82 | silesia.tar|
| lizard 2.1 -18          |  11.6 MB/s |  4271 MB/s |    77586984 | 36.61 | silesia.tar|
| lizard 2.1 -19          |  8.40 MB/s |  4307 MB/s |    77416400 | 36.53 | silesia.tar|
| lizard 2.1 -20          |   636 MB/s |  3447 MB/s |    96924204 | 45.73 | silesia.tar|
| lizard 2.1 -21          |   383 MB/s |  3487 MB/s |    89239174 | 42.10 | silesia.tar|
| lizard 2.1 -22          |   294 MB/s |  3423 MB/s |    84866725 | 40.04 | silesia.tar|
| lizard 2.1 -23          |   118 MB/s |  3577 MB/s |    81052209 | 38.24 | silesia.tar|
| lizard 2.1 -24          |  60.2 MB/s |  3579 MB/s |    78170875 | 36.88 | silesia.tar|
| lizard 2.1 -25          |  38.2 MB/s |  3561 MB/s |    75131286 | 35.45 | silesia.tar|
| lizard 2.1 -26          |  10.3 MB/s |  3678 MB/s |    72459161 | 34.19 | silesia.tar|
| lizard 2.1 -27          |  6.99 MB/s |  3679 MB/s |    70447615 | 33.24 | silesia.tar|
| lizard 2.1 -28          |  4.07 MB/s |  3725 MB/s |    69762972 | 32.92 | silesia.tar|
| lizard 2.1 -29          |  3.50 MB/s |  3636 MB/s |    68694227 | 32.41 | silesia.tar|

tansy avatar Apr 14 '25 00:04 tansy

I confirmed similar results on AMD Epyc. I think the reason is that lizard is build on old LZ4 version. Newer LZ4 versions are highly optimized for modern CPUs and compilers. Updating code base to newer LZ4 would require a lot of effort.

inikep avatar Apr 26 '25 11:04 inikep

Just wanted to inform users how to optimise the program if they use it extensively.

tansy avatar May 14 '25 13:05 tansy