From a6dbe9957eb40d4da783643a06f905efca235ba1 Mon Sep 17 00:00:00 2001 From: Michael Dietzel <14862324+MichaelDietzel@users.noreply.github.com> Date: Thu, 2 Jan 2025 21:45:45 +0100 Subject: [PATCH 1/2] added comment: realloc is already optimized --- src/borghash/HashTable.pyx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/borghash/HashTable.pyx b/src/borghash/HashTable.pyx index 1efffbf..98d0376 100644 --- a/src/borghash/HashTable.pyx +++ b/src/borghash/HashTable.pyx @@ -263,6 +263,7 @@ cdef class HashTable: # We must never use kv indexes >= RESERVED, thus we'll never need more capacity either. cdef size_t capacity = min(new_capacity, RESERVED - 1) self.stats_resize_kv += 1 + //realloc is already highly optimized (in linux). By using mremap internally only the peak address space usage is "old size" + "new size", the peak memory usage is "new size". self.keys = realloc(self.keys, capacity * self.ksize * sizeof(uint8_t)) self.values = realloc(self.values, capacity * self.vsize * sizeof(uint8_t)) self.kv_capacity = capacity From e896b6da88172d724f2677fa01e644a76c058b84 Mon Sep 17 00:00:00 2001 From: Michael Dietzel <14862324+MichaelDietzel@users.noreply.github.com> Date: Wed, 8 Jan 2025 23:50:35 +0100 Subject: [PATCH 2/2] Update HashTable.pyx fixed using wrong // instead of # for comments --- src/borghash/HashTable.pyx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/borghash/HashTable.pyx b/src/borghash/HashTable.pyx index 98d0376..633a42e 100644 --- a/src/borghash/HashTable.pyx +++ b/src/borghash/HashTable.pyx @@ -263,7 +263,7 @@ cdef class HashTable: # We must never use kv indexes >= RESERVED, thus we'll never need more capacity either. cdef size_t capacity = min(new_capacity, RESERVED - 1) self.stats_resize_kv += 1 - //realloc is already highly optimized (in linux). By using mremap internally only the peak address space usage is "old size" + "new size", the peak memory usage is "new size". + # realloc is already highly optimized (in Linux). By using mremap internally only the peak address space usage is "old size" + "new size", while the peak memory usage is only "new size". self.keys = realloc(self.keys, capacity * self.ksize * sizeof(uint8_t)) self.values = realloc(self.values, capacity * self.vsize * sizeof(uint8_t)) self.kv_capacity = capacity