From b8615eebc46fdc85b1a2a9ee379b39ede9259819 Mon Sep 17 00:00:00 2001 From: Alex Peck Date: Sun, 12 May 2024 16:16:22 -0700 Subject: [PATCH 1/2] skip reschedule --- BitFaster.Caching/Lfu/NodePolicy.cs | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/BitFaster.Caching/Lfu/NodePolicy.cs b/BitFaster.Caching/Lfu/NodePolicy.cs index f2e89261..dbbde895 100644 --- a/BitFaster.Caching/Lfu/NodePolicy.cs +++ b/BitFaster.Caching/Lfu/NodePolicy.cs @@ -97,9 +97,16 @@ public void AdvanceTime() [MethodImpl(MethodImplOptions.AggressiveInlining)] public void OnRead(TimeOrderNode node) { - var currentExpiry = node.TimeToExpire - current; - node.TimeToExpire = current + expiryCalculator.GetExpireAfterRead(node.Key, node.Value, currentExpiry); - wheel.Reschedule(node); + //var currentExpiry = node.TimeToExpire - current; + //node.TimeToExpire = current + expiryCalculator.GetExpireAfterRead(node.Key, node.Value, currentExpiry); + //wheel.Reschedule(node); + + var oldTte = node.TimeToExpire; + node.TimeToExpire = current + expiryCalculator.GetExpireAfterRead(node.Key, node.Value, node.TimeToExpire - current); + if (oldTte.raw != node.TimeToExpire.raw) + { + wheel.Reschedule(node); + } } [MethodImpl(MethodImplOptions.AggressiveInlining)] @@ -113,9 +120,16 @@ public void OnWrite(TimeOrderNode node) } else { - var currentExpiry = node.TimeToExpire - current; - node.TimeToExpire = current + expiryCalculator.GetExpireAfterUpdate(node.Key, node.Value, currentExpiry); - wheel.Reschedule(node); + //var currentExpiry = node.TimeToExpire - current; + //node.TimeToExpire = current + expiryCalculator.GetExpireAfterUpdate(node.Key, node.Value, currentExpiry); + //wheel.Reschedule(node); + + var oldTte = node.TimeToExpire; + node.TimeToExpire = current + expiryCalculator.GetExpireAfterUpdate(node.Key, node.Value, node.TimeToExpire - current); + if (oldTte.raw != node.TimeToExpire.raw) + { + wheel.Reschedule(node); + } } } From 6e9fa588ec75268938988d23a0e19309e62bfbd4 Mon Sep 17 00:00:00 2001 From: Alex Peck Date: Sun, 12 May 2024 20:11:15 -0700 Subject: [PATCH 2/2] cleanup --- BitFaster.Caching/Lfu/NodePolicy.cs | 8 -------- 1 file changed, 8 deletions(-) diff --git a/BitFaster.Caching/Lfu/NodePolicy.cs b/BitFaster.Caching/Lfu/NodePolicy.cs index dbbde895..c0752175 100644 --- a/BitFaster.Caching/Lfu/NodePolicy.cs +++ b/BitFaster.Caching/Lfu/NodePolicy.cs @@ -97,10 +97,6 @@ public void AdvanceTime() [MethodImpl(MethodImplOptions.AggressiveInlining)] public void OnRead(TimeOrderNode node) { - //var currentExpiry = node.TimeToExpire - current; - //node.TimeToExpire = current + expiryCalculator.GetExpireAfterRead(node.Key, node.Value, currentExpiry); - //wheel.Reschedule(node); - var oldTte = node.TimeToExpire; node.TimeToExpire = current + expiryCalculator.GetExpireAfterRead(node.Key, node.Value, node.TimeToExpire - current); if (oldTte.raw != node.TimeToExpire.raw) @@ -120,10 +116,6 @@ public void OnWrite(TimeOrderNode node) } else { - //var currentExpiry = node.TimeToExpire - current; - //node.TimeToExpire = current + expiryCalculator.GetExpireAfterUpdate(node.Key, node.Value, currentExpiry); - //wheel.Reschedule(node); - var oldTte = node.TimeToExpire; node.TimeToExpire = current + expiryCalculator.GetExpireAfterUpdate(node.Key, node.Value, node.TimeToExpire - current); if (oldTte.raw != node.TimeToExpire.raw)