summaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorKarsten Blees <karsten.blees@gmail.com>2014-07-02 22:22:54 (GMT)
committerJunio C Hamano <gitster@pobox.com>2014-07-07 20:56:38 (GMT)
commit7b64d42d22206d9995a8f0cb3b515e623cac4702 (patch)
tree26895c5fde113b1d84f52409f951feb37f451412 /t
parentab73a9d119240b0b908ccb9edd19b8e536ce29b9 (diff)
downloadgit-7b64d42d22206d9995a8f0cb3b515e623cac4702.zip
git-7b64d42d22206d9995a8f0cb3b515e623cac4702.tar.gz
git-7b64d42d22206d9995a8f0cb3b515e623cac4702.tar.bz2
hashmap: add string interning API
Interning short strings with high probability of duplicates can reduce the memory footprint and speed up comparisons. Add strintern() and memintern() APIs that use a hashmap to manage the pool of unique, interned strings. Note: strintern(getenv()) could be used to sanitize git's use of getenv(), in case we ever encounter a platform where a call to getenv() invalidates previous getenv() results (which is allowed by POSIX). Signed-off-by: Karsten Blees <blees@dcon.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't')
-rwxr-xr-xt/t0011-hashmap.sh13
1 files changed, 13 insertions, 0 deletions
diff --git a/t/t0011-hashmap.sh b/t/t0011-hashmap.sh
index 391e2b6..f97c805 100755
--- a/t/t0011-hashmap.sh
+++ b/t/t0011-hashmap.sh
@@ -237,4 +237,17 @@ test_expect_success 'grow / shrink' '
'
+test_expect_success 'string interning' '
+
+test_hashmap "intern value1
+intern Value1
+intern value2
+intern value2
+" "value1
+Value1
+value2
+value2"
+
+'
+
test_done