Skip to content

Commit 0d768a6

Browse files
committed
mingw: use mimalloc
Thorough benchmarking with repacking a subset of linux.git (the commit history reachable from 93a6fef ([PATCH] fix the SYSCTL=n compilation, 2007-02-28), to be precise) suggest that this allocator is on par, in multi-threaded situations maybe even better than nedmalloc: `git repack -adfq` with mimalloc, 8 threads: 31.166991900 27.576763800 28.712311000 27.373859000 27.163141900 `git repack -adfq` with nedmalloc, 8 threads: 31.915032900 27.149883100 28.244933700 27.240188800 28.580849500 In a different test using GitHub Actions build agents (probably single-threaded, a core-strength of nedmalloc)): `git repack -q -d -l -A --unpack-unreachable=2.weeks.ago` with mimalloc: 943.426 978.500 939.709 959.811 954.605 `git repack -q -d -l -A --unpack-unreachable=2.weeks.ago` with nedmalloc: 995.383 952.179 943.253 963.043 980.468 While these measurements were not executed with complete scientific rigor, as no hardware was set aside specifically for these benchmarks, it shows that mimalloc and nedmalloc perform almost the same, nedmalloc with a bit higher variance and also slightly higher average (further testing suggests that nedmalloc performs worse in multi-threaded situations than in single-threaded ones). In short: mimalloc seems to be slightly better suited for our purposes than nedmalloc. Seeing that mimalloc is developed actively, while nedmalloc ceased to see any updates in eight years, let's use mimalloc on Windows instead. Signed-off-by: Johannes Schindelin <[email protected]>
1 parent 51fca74 commit 0d768a6

File tree

1 file changed

+1
-2
lines changed

1 file changed

+1
-2
lines changed

config.mak.uname

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -656,7 +656,7 @@ ifeq ($(uname_S),MINGW)
656656
USE_WIN32_IPC = YesPlease
657657
USE_WIN32_MMAP = YesPlease
658658
MMAP_PREVENTS_DELETE = UnfortunatelyYes
659-
USE_NED_ALLOCATOR = YesPlease
659+
USE_MIMALLOC = YesPlease
660660
UNRELIABLE_FSTAT = UnfortunatelyYes
661661
OBJECT_CREATION_USES_RENAMES = UnfortunatelyNeedsTo
662662
NO_REGEX = YesPlease
@@ -724,7 +724,6 @@ else
724724
HAVE_LIBCHARSET_H = YesPlease
725725
USE_GETTEXT_SCHEME = fallthrough
726726
USE_LIBPCRE = YesPlease
727-
USE_NED_ALLOCATOR = YesPlease
728727
NO_PYTHON =
729728
ifeq (/mingw64,$(subst 32,64,$(prefix)))
730729
# Move system config into top-level /etc/

0 commit comments

Comments
 (0)