Skip to content

Commit

Permalink
perf(plugin-shikiji): 优化开发时编译速度
Browse files Browse the repository at this point in the history
  • Loading branch information
pengzhanbo committed Feb 24, 2024
1 parent 4adc786 commit 4d950b7
Showing 1 changed file with 39 additions and 0 deletions.
39 changes: 39 additions & 0 deletions plugins/plugin-shikiji/src/node/lru.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
// adapted from https://stackoverflow.com/a/46432113/11613622

export class LRUCache<K, V> {
private max: number
private cache: Map<K, V>

constructor(max: number = 10) {
this.max = max
this.cache = new Map<K, V>()
}

get(key: K): V | undefined {
const item = this.cache.get(key)
if (item !== undefined) {
// refresh key
this.cache.delete(key)
this.cache.set(key, item)
}
return item
}

set(key: K, val: V): void {
// refresh key
if (this.cache.has(key))
this.cache.delete(key)
// evict oldest
else if (this.cache.size === this.max)
this.cache.delete(this.first()!)
this.cache.set(key, val)
}

first(): K | undefined {
return this.cache.keys().next().value
}

clear(): void {
this.cache.clear()
}
}

0 comments on commit 4d950b7

Please sign in to comment.