Artificial truth

archives | latest | homepage | atom/rss/twitter

The more you see, the less you believe.

Performance comparison between isoalloc 1.0.0 and 1.1.0
Wed 22 December 2021 — download

struct recently released the version 1.1.0: of isoalloc.

This release brings many bug fixes and performance improvements from the last few months of development. The most noteworthy of which is the zone lookup table which has significantly improved the performance of both allocations and frees.

This is an excellent excuse opportunity to use mimalloc-bench, to which I contributed to recently, to check the differences between the old and the new version of isoalloc in various benchmarks.

. 1.0.0 (in s) 1.1.0 (in s) 1.0.0 (in KB) 1.1.0 (in KB)
cfrac 14.630 16.000 15316 15644
espresso 9.240 9.940 56944 56104
barnes 4.470 4.530 66100 66104
redis 15.986 16.231 70088 70620
larsonN 1176.977 1377.436 41804 45052
larsonN-sized 1176.868 1402.950 41884 44912
mstressN 0.200 0.210 51056 51292
rptestN 1.203 0.978 60232 58724
alloc-test1 10.240 11.280 35928 35600
alloc-testN 35.800 37.040 35972 35720
xmalloc-testN 72.864 66.890 38468 51480
cache-scratch1 2.430 2.150 11640 11544
cache-scratchN 5.790 1.440 11476 11656
glibc-simple 12.260 13.510 14996 14908
glibc-thread 2433.354 2288.543 43480 43480
gs 223.630 231.570 304152 308712

The two first columns of data contain the time required to run the benchmark, the two last ones are about the maximum resident set size of the process during its lifetime in kilobytes.

The only significant improvement (x4) is on the cache-scratchN benchmark, designed to stress-test cache contention and threading locking. The rest is more of less in the noise level, except a small increase in memory consumption on larsonN and larsonN-sized, but nothing crazy. It's worth upgrading :P