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>
This commit is contained in:
committed by
Junio C Hamano
parent
ab73a9d119
commit
7b64d42d22
@ -87,4 +87,12 @@ static inline void *hashmap_iter_first(struct hashmap *map,
|
||||
return hashmap_iter_next(iter);
|
||||
}
|
||||
|
||||
/* string interning */
|
||||
|
||||
extern const void *memintern(const void *data, size_t len);
|
||||
static inline const char *strintern(const char *string)
|
||||
{
|
||||
return memintern(string, strlen(string));
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user