Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
138 lines (112 sloc) 3.85 KB
N = 100000
----------
function (){
// 1. put
// Simply append a new entry.
// There will be no reordering since we simply append to the tail.
for (var i=N; --i;)
c.put('key'+i, i);
}
rss: +32,384 kB -- (6,472 kB -> 38,856 kB)
vsize: +24,168 kB -- (3,040,680 kB -> 3,064,848 kB)
heap total: +38,225 kB -- (3,813 kB -> 42,037 kB)
heap used: +26,346 kB -- (1,584 kB -> 27,930 kB)
-- 205ms --
----------
function (){
// 2. get recent -> old
// Get entries starting with newest, effectively reversing the list.
//
// a. For each get, a find is first executed implemented as a native object with
// keys mapping to entries, so this should be reasonably fast as most native
// objects are implemented as hash maps.
//
// b. For each get, the aquired item will be moved to tail which includes a
// maximum of 7 assignment operations (minimum 3).
for (var i=1,L=N+1; i<L; ++i)
c.get('key'+i, i);
}
rss: +2,900 kB -- (36,596 kB -> 39,496 kB)
vsize: +0 kB -- (3,063,280 kB -> 3,063,280 kB)
heap total: +0 kB -- (39,669 kB -> 39,669 kB)
heap used: +4,312 kB -- (24,747 kB -> 29,059 kB)
-- 60ms --
----------
function (){
// 3. get old -> recent
// Get entries starting with oldest, effectively reversing the list.
//
// - Same conditions apply as for test 2.
for (var i=1,L=N+1; i<L; ++i)
c.get('key'+i);
}
rss: +3,632 kB -- (39,504 kB -> 43,136 kB)
vsize: +2,332 kB -- (3,063,280 kB -> 3,065,612 kB)
heap total: +2,190 kB -- (39,669 kB -> 41,860 kB)
heap used: -792 kB -- (29,073 kB -> 28,281 kB)
-- 88ms --
----------
function (){
// 4. get missing
// Get try to get entries not in the cache.
// - Same conditions apply as for test 2, section a.
for (var i=1,L=N+1; i<L; ++i)
c.get('xkey'+i);
}
rss: +3,356 kB -- (43,140 kB -> 46,496 kB)
vsize: +0 kB -- (3,065,612 kB -> 3,065,612 kB)
heap total: +16,384 kB -- (41,860 kB -> 58,244 kB)
heap used: -2,369 kB -- (28,289 kB -> 25,920 kB)
-- 63ms --
----------
function (){
// 5. put overflow
// Overflow the cache with N more items than it can hold.
// a. The complexity of put in this case should be:
// ( <get whith enough space> + <shift> )
for (var i=N; --i;)
c.put('key2_'+i, i);
}
rss: +6,224 kB -- (46,496 kB -> 52,720 kB)
vsize: +0 kB -- (3,065,612 kB -> 3,065,612 kB)
heap total: +0 kB -- (58,244 kB -> 58,244 kB)
heap used: +12,893 kB -- (25,927 kB -> 38,820 kB)
-- 146ms --
----------
function (){
// 6. shift head -> tail
// Remove all entries going from head to tail
for (var i=1,L=N+1; i<L; ++i)
c.shift();
}
rss: +0 kB -- (52,724 kB -> 52,724 kB)
vsize: +0 kB -- (3,065,612 kB -> 3,065,612 kB)
heap total: +0 kB -- (58,244 kB -> 58,244 kB)
heap used: +0 kB -- (38,826 kB -> 38,827 kB)
-- 36ms --
----------
function (){
// 7. put
// Simply put N new items into an empty cache with exactly N space.
for (var i=N; --i;)
c.put('key'+i, i);
}
rss: +6,280 kB -- (52,728 kB -> 59,008 kB)
vsize: +0 kB -- (3,065,612 kB -> 3,065,612 kB)
heap total: +0 kB -- (58,244 kB -> 58,244 kB)
heap used: -1,906 kB -- (38,832 kB -> 36,926 kB)
-- 104ms --
----------
function (){
// 8. remove random
// a. Most operations (which are not entries at head or tail) will cause closes
// siblings to be relinked.
for (var i=shuffledKeys.length, key; key = shuffledKeys[--i]; ) {
c.remove('key'+i, i);
}
}
rss: +4 kB -- (70,056 kB -> 70,060 kB)
vsize: +0 kB -- (3,072,812 kB -> 3,072,812 kB)
heap total: +0 kB -- (65,050 kB -> 65,050 kB)
heap used: -11,301 kB -- (40,337 kB -> 29,036 kB)
-- 93ms --