diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2017-05-11 14:29:18 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2017-05-11 14:29:18 +0100 |
commit | 7b44f3af0b2b7674c4ee14d386022b8d96e4ceb8 (patch) | |
tree | 0b65da08283655a4830ca430d2ae7b20c28d3628 /src/fuzzy_storage.c | |
parent | a43df55fa537d37c93d151b0c17578eefd83eb84 (diff) | |
download | rspamd-7b44f3af0b2b7674c4ee14d386022b8d96e4ceb8.tar.gz rspamd-7b44f3af0b2b7674c4ee14d386022b8d96e4ceb8.zip |
[Rework] Use LFU algorithm in LRU cache
Avoid usage of heap as its updates are not cheap. Use LFU algorithm
described here: http://antirez.com/news/109
Diffstat (limited to 'src/fuzzy_storage.c')
-rw-r--r-- | src/fuzzy_storage.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/fuzzy_storage.c b/src/fuzzy_storage.c index 50bc864bc..99b98ceff 100644 --- a/src/fuzzy_storage.c +++ b/src/fuzzy_storage.c @@ -1976,7 +1976,8 @@ rspamd_fuzzy_stat_to_ucl (struct rspamd_fuzzy_storage_ctx *ctx, gboolean ip_stat while (g_hash_table_iter_next (&ip_it, &k, &v)) { lru_elt = v; - ip_cur = rspamd_fuzzy_storage_stat_key (lru_elt->data); + ip_cur = rspamd_fuzzy_storage_stat_key ( + rspamd_lru_hash_element_data (lru_elt)); ucl_object_insert_key (ip_elt, ip_cur, rspamd_inet_address_to_string (k), 0, true); } @@ -2019,7 +2020,8 @@ rspamd_fuzzy_stat_to_ucl (struct rspamd_fuzzy_storage_ctx *ctx, gboolean ip_stat lru_elt = v; ucl_object_insert_key (ip_elt, - ucl_object_fromint (*(guint64 *)lru_elt->data), + ucl_object_fromint (*(guint64 *) + rspamd_lru_hash_element_data (lru_elt)), rspamd_inet_address_to_string (k), 0, true); } |