faster-lru-cache
TypeScript icon, indicating that this package has built-in type declarations

2.0.0 • Public • Published

Build Status

Faster LRU-Cache

Faster LRU-Cache is a really small implementation of an LRU-Cache built on ES6 Maps. The primary goal was to keep it as small as possible for usage in web apps, where size is critical for performance.

When writing it I did a few simple micro-benchmarks on esbench which shows that Maps are a faster than normal Objects in modern browsers.

Browser Advantage over Object
Chrome 54 +1.6% (this is neglectable)
Safari 10.1 +40%
Firefox 50 +50%

Keep in mind though that the result of micro-benchmarks may change drastically over time as browser vendors keep optimizing their engines.

Note: All benchmarks are run on a Macbook Pro 15" 2015

Usage

import LRUCache from "faster-lru-cache";
 
const cache = new LRUCache(3);
 
cache.set("foo", "1234");
cache.set("bar", "abcde");
 
cache.get("foo"); // returns "1234"
 
cache.set("baz", "asdf");
 
// We have 3 items in the cache now and reached our limit.
// These items are "foo", "bar", "baz".
// The next insertion will remove oldest item in the cache.
// Note that this is NOT "foo", because we accessed it previously
// which is why it is marked as newer than "bar". The latter will be removed.
cache.set("whatever", "test");
 
console.log(cache);
// Logs:
// LRUCache {
//   _cache: Map { 'foo' => '1234', 'baz' => 'asdf', 'whatever' => 'test' },
//   usage: [ 'whatever', 'baz', 'foo' ],
//   limit: 3 }

API

constructor(limit: number)

Set the maximum number of items that should be present in the cache. The default is 0 which means there is no limit.

cache.set(key: any, value: any)

Add an item to the cache.

cache.get(key: any)

Retrieve an item from the cache.

cache.clear()

Clear the cache.

cache.size: number

Get the current cache size.

Readme

Keywords

none

Package Sidebar

Install

npm i faster-lru-cache

Weekly Downloads

1

Version

2.0.0

License

MIT

Last publish

Collaborators

  • marvinhagemeister