ARROW-12316: [C++] Prefer mimalloc on Apple
mimalloc gives better results than jemalloc on macro-benchmarks on macOS.
Closes #10015 from pitrou/ARROW-12316-apple-mimalloc
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Neal Richardson <neal.p.richardson@gmail.com>
diff --git a/cpp/src/arrow/memory_pool.cc b/cpp/src/arrow/memory_pool.cc
index 2d19b3d..f402ccb 100644
--- a/cpp/src/arrow/memory_pool.cc
+++ b/cpp/src/arrow/memory_pool.cc
@@ -113,13 +113,19 @@
const std::vector<SupportedBackend>& SupportedBackends() {
static std::vector<SupportedBackend> backends = {
-#ifdef ARROW_JEMALLOC
- {"jemalloc", MemoryPoolBackend::Jemalloc},
+ // ARROW-12316: Apple => mimalloc first, then jemalloc
+ // non-Apple => jemalloc first, then mimalloc
+#if defined(ARROW_JEMALLOC) && !defined(__APPLE__)
+ {"jemalloc", MemoryPoolBackend::Jemalloc},
#endif
#ifdef ARROW_MIMALLOC
- {"mimalloc", MemoryPoolBackend::Mimalloc},
+ {"mimalloc", MemoryPoolBackend::Mimalloc},
#endif
- {"system", MemoryPoolBackend::System}};
+#if defined(ARROW_JEMALLOC) && defined(__APPLE__)
+ {"jemalloc", MemoryPoolBackend::Jemalloc},
+#endif
+ {"system", MemoryPoolBackend::System}
+ };
return backends;
}