Hi everyone!
We are happy to announce that there's a new version of Benchmark (previously known as package-benchmark) out today, ordo-one/benchmark 1.35.0 which finally weans the package of the jemalloc dependency for malloc metrics (it was blocked by some toolchain issues for a long time, but all looks good now from 6.3! Older toolchains can still use jemalloc - there are also traits to completely disable the interpositions when needed).
This is done with a custom malloc interposer that we also have open sourced separately here: GitHub - ordo-one/malloc-interposer · GitHub
This makes malloc metrics more easily accessible and don't require installing jemalloc for e.g. CI machines anymore. It also makes sure we use the built-in malloc package for each platform (so potential performance issues related to the malloc used is not distorted by the benchmark running with jemalloc).
It also provides slightly higher fidelity metric capture for some scenarios (e.g. remalloc to zero size), but overall numbers closely should match the previous jemalloc metrics.
Many thanks to @supersonicbyte who did all the work on this - as well as to the Swift-NIO teams work on this from which it derives it's original lineage for the interposer (which then has been refactored and modified a fair bit -- I just realized attribution in that repo is missing, now fixed up!).
Cheers,
Joakim