Skip to content
Snippets Groups Projects
Closed Use timers to determine when it's time to prune cache entries
  • View options
  • Use timers to determine when it's time to prune cache entries

  • View options
  • Closed Issue created by Philipp Winter

    Each time a new cache entry is added, bridgestrap iterates over existing cache entries to figure out what entries have expired:

    // First, prune expired cache entries.                                      
    now := time.Now()                                                           
    cacheMutex.Lock()                                                           
    for index, entry := range *tc {                                             
        if entry.Time.Before(now.Add(-CacheValidity)) {                         
            delete(*tc, index)                                                  
        }                                                                       
    }

    This scales linearly, which is bad news. On my core i7 2.9 GHz laptop, it takes 0.3 ms to prune a cache holding 10,000 elements. @cohosh suggested that we could use Timers instead: each time a cache entry is added, we set up a new timer. In parallel, we have a goroutine running that waits for the timers to fire, to then delete the expired cache entries.

    Linked items ... 0

  • Activity

    • All activity
    • Comments only
    • History only
    • Newest first
    • Oldest first
    Loading Loading Loading Loading Loading Loading Loading Loading Loading Loading