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