hashmap: add string interning API
commit7b64d42d22206d9995a8f0cb3b515e623cac4702
authorKarsten Blees <karsten.blees@gmail.com>
Wed, 2 Jul 2014 22:22:54 +0000 (3 00:22 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 7 Jul 2014 20:56:38 +0000 (7 13:56 -0700)
tree26895c5fde113b1d84f52409f951feb37f451412
parentab73a9d119240b0b908ccb9edd19b8e536ce29b9
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>
Documentation/technical/api-hashmap.txt
hashmap.c
hashmap.h
t/t0011-hashmap.sh
test-hashmap.c