keskiviikko 11. tammikuuta 2017

Performance of unxz and xz (on a 25Mhz 486SL) built with gcc 3.4, 4.1, 4.7 and 6 (* -Os/-O2/-O3)

The decompression test was decoding the .tar.xz (742.5K) that contained these binaries to /dev/null. The tar.xz was compressed with xz -2.

Times:
3.4-O2
real    0m 48.50s
user    0m 38.13s
sys    0m 0.94s
3.4-O3
real    0m 42.01s
user    0m 39.27s
sys    0m 0.88s
3.4-Os
real    0m 31.21s
user    0m 29.70s
sys    0m 0.73s
4.1-O2
real    0m 31.93s
user    0m 29.10s
sys    0m 0.77s
4.1-O3
real    0m 30.72s
user    0m 29.30s
sys    0m 0.63s
4.1-Os
real    0m 31.93s
user    0m 30.37s
sys    0m 0.76s
4.7-O2
real    0m 33.08s
user    0m 30.07s
sys    0m 0.69s
4.7-O3
real    0m 31.74s
user    0m 30.03s
sys    0m 0.74s
4.7-Os
real    0m 30.24s
user    0m 28.58s
sys    0m 0.69s
6.3-O2
real    0m 31.77s
user    0m 30.17s
sys    0m 0.69s
6.3-O3
real    0m 31.53s
user    0m 30.14s
sys    0m 0.70s
6.3-Os
real    0m 28.51s
user    0m 27.05s
sys    0m 0.73s

I've highlighted worst and best user time. It seems that -Os is pretty good for decompression (in this odd case)...

The compression test was an xz -0 compression of the uncompressed .tar (2.7M) to /dev/null (the output would be 931.7K).

Times:
3.4-O2
real    2m 14.93s
user    1m 55.39s
sys    0m 3.15s
3.4-O3
real    1m 55.66s
user    1m 46.14s
sys    0m 2.83s
3.4-Os
real    2m 9.30s
user    1m 58.94s
sys    0m 2.45s
4.1-O2
real    1m 55.53s
user    1m 41.88s
sys    0m 2.40s
4.1-O3
real    1m 49.50s
user    1m 37.86s
sys    0m 2.93s
4.1-Os
real    2m 10.07s
user    1m 49.07s
sys    0m 4.22s
4.7-O2
real    1m 54.09s
user    1m 38.77s
sys    0m 3.10s
4.7-O3
real    1m 52.92s
user    1m 42.22s
sys    0m 2.83s
4.7-Os
real    2m 8.43s
user    1m 56.91s
sys    0m 2.82s
6.3-O2
real    1m 48.35s
user    1m 37.14s
sys    0m 2.71s
6.3-O3
real    1m 48.53s
user    1m 37.91s
sys    0m 3.06s
6.3-Os
real    2m 3.00s
user    1m 55.42s
sys    0m 2.94s

Again highlighted worst and best. It seems -Os is pretty bad for compression.

Also of some interest might be the stripped binary size for these builds of xz+liblzma:
232K    xz-3.4-O2
244K    xz-3.4-O3
204K    xz-3.4-Os
220K    xz-4.1-O2
240K    xz-4.1-O3
196K    xz-4.1-Os
256K    xz-4.7-O2
288K    xz-4.7-O3
212K    xz-4.7-Os
264K    xz-6.3-O2
304K    xz-6.3-O3
212K    xz-6.3-Os

Why all of this? Because.

PS. xz -0 compresses faster than gzip -9 and makes a smaller file. OTOH gunzip is about 3x faster (1/3 of the time) than unxz on this hw.

PPS. The 486 has 8M of RAM and runs linux 2.4.36 with uClibc 0.9.30.3 :P

PPPS. The binaries and little helper scripts for running them and the results (and the test files used) are at https://urjaman.ddns.net/xz-486-tests.tar.xz

Ei kommentteja:

Lähetä kommentti