From: 11rcombs Date: Fri, 24 Jan 2014 01:23:30 +0000 (+0100) Subject: Append new cache items at the start of the collision list X-Git-Tag: 0.11.0~35 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7584bbd1cadead327e22a80264318462cd3bf149;p=libass Append new cache items at the start of the collision list The idea is that more recently-added cache items are more likely to get hits. Signed-off-by: wm4 --- diff --git a/libass/ass_cache.c b/libass/ass_cache.c index 91801a0..dd02e75 100644 --- a/libass/ass_cache.c +++ b/libass/ass_cache.c @@ -243,13 +243,13 @@ void *ass_cache_put(Cache *cache, void *key, void *value) { unsigned bucket = cache->hash_func(key, cache->key_size) % cache->buckets; CacheItem **item = &cache->map[bucket]; - while (*item) - item = &(*item)->next; + CacheItem *next = *item; (*item) = calloc(1, sizeof(CacheItem)); (*item)->key = malloc(cache->key_size); (*item)->value = malloc(cache->value_size); memcpy((*item)->key, key, cache->key_size); memcpy((*item)->value, value, cache->value_size); + (*item)->next = next; cache->items++; if (cache->size_func)