Closed ValarDragon closed 4 months ago
The recent modifications enhance the efficiency and readability of the caching mechanism within the cache.go
file. By introducing local variables to store string representations of keys before operations, the Add
and Remove
methods now offer clearer and potentially more performant key handling. Furthermore, the addition of a removeWithKey
method simplifies the removal process by allowing direct key-based cache element deletion, streamlining cache management.
File Path | Change Summary |
---|---|
cache/cache.go |
- Add method stores key's string representation in a local variable before checking existence.- Remove method uses a local variable for key's string representation before operations.- Added removeWithKey method for direct key-based removal. |
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?
@mergifyio backport release/v1.x.x
backport release/v1.x.x
@ValarDragon this isn't fully the correct optimization despite eliminating the extra call to node.Key() while then also keep the original intended optimization or zero byteslice->string conversion in the case of already existing keys when looking im the map. In short it now it incurs the byteslice->string conversion in all cases, but could have been faster if it had been:
key := node.GetKey()
if value, ok := c.dict[string(key)]; ok {
...
}
c.dict[string(key)] = value
Remove some extra
GetKey
calls within the LRU cache code. GetKey calls took 1.5s on an Osmosis 2000 block long block sync. This PR should shave off .45s of that.Though ideally we get the LRU code rethought / adapted more, to make it generally lower overhead. (Its currently 13.5 s on a 2000 block sync!)