You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
994 B
48 lines
994 B
3 years ago
|
var Stats = require('statistics/mutate')
|
||
|
var LRU = require('./')
|
||
|
|
||
|
//simple benchmarks, and measure standard deviation
|
||
|
|
||
|
function run (N, op, init) {
|
||
|
var stats = null, value
|
||
|
for(var j = 0; j < 100; j++) {
|
||
|
if(init) value = init(j)
|
||
|
var start = Date.now()
|
||
|
for(var i = 0; i < N; i++) op(value, i)
|
||
|
stats = Stats(stats, N/((Date.now() - start)))
|
||
|
}
|
||
|
return stats
|
||
|
}
|
||
|
|
||
|
//set 1000 random items, then read 10000 items.
|
||
|
//since they are random, there will be misses as well as hits
|
||
|
console.log('GET', run(100000, function (lru, n) {
|
||
|
lru.get(~~(Math.random()*1000))
|
||
|
// lru.set(n, Math.random())
|
||
|
}, function () {
|
||
|
var lru = LRU(1000)
|
||
|
for(var i = 0; i ++ ; i < 1000)
|
||
|
lru.set(~~(Math.random()*1000), Math.random())
|
||
|
return lru
|
||
|
}))
|
||
|
|
||
|
//set 100000 random values into LRU for 1000 values.
|
||
|
//this means 99/100 should be evictions
|
||
|
console.log('SET', run(100000, function (lru, n) {
|
||
|
lru.set(~~(Math.random()*100000), Math.random())
|
||
|
}, function () {
|
||
|
return LRU(1000)
|
||
|
}))
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|