mimalloc is a compact general purpose allocator from Microsoft. It consistently outperforms glibc's `malloc()` in allocation-heavy workloads, such as Lix's evaluator It's currently only linked in the main `nix` executable, as Boehm's GC uses its own allocator. Other allocations that *do* go through glibc's `malloc()` are still much faster, though Benchmarked on x86_64-linux against Nixpkgs `bd07873`: | attribute | thunks | lix@`1396012` | mimalloc | uplift | |-------------------|---------|---------------|----------|--------| | hello | 206444 | 0.726s | 0.620s | 1.17x | | chromium | 1177382 | 2.273s | 2.136s | 1.06x | | firefox-unwrapped | 1394797 | 2.521s | 2.378s | 1.06x | | texliveFull | 3186440 | 4.992s | 4.672s | 1.07x | | nixosTests.gnome | 7905808 | 6.115s | 5.723s | 1.07x | Based-on: https://github.com/NixOS/nix/pull/15596 Co-authored-by: Bernardo Meurer Costa <beme@anthropic.com> Change-Id: I3ad92eacc075efeaf3d9f7730ada7b29835536a4
17 lines
564 B
Markdown
17 lines
564 B
Markdown
---
|
||
synopsis: "Use mimalloc for faster evaluation"
|
||
cls: [5645]
|
||
category: Features
|
||
credits: [getchoo, lovesegfault]
|
||
---
|
||
|
||
Lix now links with [mimalloc](https://github.com/microsoft/mimalloc),
|
||
replacing the system's default `malloc()` for all non-GC allocations.
|
||
|
||
This yields a **5–12% wall-clock improvement** on evaluation workloads,
|
||
ranging from `nix-instantiate hello` to `nix-env -qa` and full NixOS
|
||
configurations.
|
||
|
||
The allocator can be disabled at build time with `-Dmimalloc=disabled`,
|
||
or by passing the `useMimalloc = false` override to the `lix` package.
|