Enable performance optimizations by default (+557% improvement)
## Performance Impact **Before** (optimizations OFF): - Random Mixed 256B: 9.4M ops/s - System malloc ratio: 10.6% (9.5x slower) **After** (optimizations ON): - Random Mixed 256B: 61.8M ops/s (+557%) - System malloc ratio: 70.0% (1.43x slower) ✅ - 3-run average: 60.1M - 62.8M ops/s (±2.2% variance) ## Changes Enabled 3 critical optimizations by default: ### 1. HAKMEM_SS_EMPTY_REUSE (hakmem_shared_pool.c:810) ```c // BEFORE: default OFF empty_reuse_enabled = (e && *e && *e != '0') ? 1 : 0; // AFTER: default ON empty_reuse_enabled = (e && *e && *e == '0') ? 0 : 1; ``` **Impact**: Reuse empty slabs before mmap, reduces syscall overhead ### 2. HAKMEM_TINY_UNIFIED_CACHE (tiny_unified_cache.h:69) ```c // BEFORE: default OFF g_enable = (e && *e && *e != '0') ? 1 : 0; // AFTER: default ON g_enable = (e && *e && *e == '0') ? 0 : 1; ``` **Impact**: Unified TLS cache improves hit rate ### 3. HAKMEM_FRONT_GATE_UNIFIED (malloc_tiny_fast.h:42) ```c // BEFORE: default OFF g_enable = (e && *e && *e != '0') ? 1 : 0; // AFTER: default ON g_enable = (e && *e && *e == '0') ? 0 : 1; ``` **Impact**: Unified front gate reduces dispatch overhead ## ENV Override Users can still disable optimizations if needed: ```bash export HAKMEM_SS_EMPTY_REUSE=0 # Disable empty slab reuse export HAKMEM_TINY_UNIFIED_CACHE=0 # Disable unified cache export HAKMEM_FRONT_GATE_UNIFIED=0 # Disable unified front gate ``` ## Comparison to Competitors ``` mimalloc: 113.34M ops/s (1.83x faster than HAKMEM) System malloc: 88.20M ops/s (1.43x faster than HAKMEM) HAKMEM: 61.80M ops/s ✅ Competitive performance ``` ## Files Modified - core/hakmem_shared_pool.c - EMPTY_REUSE default ON - core/front/tiny_unified_cache.h - UNIFIED_CACHE default ON - core/front/malloc_tiny_fast.h - FRONT_GATE_UNIFIED default ON 🚀 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -66,7 +66,7 @@ static inline int unified_cache_enabled(void) {
|
||||
static int g_enable = -1;
|
||||
if (__builtin_expect(g_enable == -1, 0)) {
|
||||
const char* e = getenv("HAKMEM_TINY_UNIFIED_CACHE");
|
||||
g_enable = (e && *e && *e != '0') ? 1 : 0;
|
||||
g_enable = (e && *e && *e == '0') ? 0 : 1; // default ON
|
||||
#if !HAKMEM_BUILD_RELEASE
|
||||
if (g_enable) {
|
||||
fprintf(stderr, "[Unified-INIT] unified_cache_enabled() = %d\n", g_enable);
|
||||
|
||||
Reference in New Issue
Block a user