From 7584bbd1cadead327e22a80264318462cd3bf149 Mon Sep 17 00:00:00 2001 From: 11rcombs Date: Fri, 24 Jan 2014 02:23:30 +0100 Subject: 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 --- libass/ass_cache.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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) -- cgit v1.2.3