Skip to content

Commit 8b67355

Browse files
committed
Optimize eviction logic in LRU cache by adding a pre-emptive eviction check before insertion
1 parent 2cf852b commit 8b67355

1 file changed

Lines changed: 5 additions & 3 deletions

File tree

src/kemal/route_handler.cr

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,12 @@ module Kemal
4848
return
4949
end
5050

51+
# Evict before adding to avoid unnecessary hash resize
52+
evict_if_at_capacity
53+
5154
node = Node(K, V).new(key, value)
5255
@map[key] = node
5356
insert_front(node)
54-
evict_if_needed
5557
end
5658

5759
private def insert_front(node : Node(K, V))
@@ -83,8 +85,8 @@ module Kemal
8385
@head = node
8486
end
8587

86-
private def evict_if_needed
87-
return if @map.size <= @capacity
88+
private def evict_if_at_capacity
89+
return if @map.size < @capacity
8890

8991
if lru = @tail
9092
# unlink tail

0 commit comments

Comments
 (0)