Cache in vs undefined (v3)

Revision 3 of this benchmark created by vjeux on


Description

Associated blog article http://blog.vjeux.com/2011/javascript/improve-cache-performance-reduce-lookup.html

Preparation HTML

<script>
  var keyHit = 'in'
  var keyMiss = 'out'
</script>

Setup

var cache = {}
    for (var i = 0; i < 10000; ++i) {
      cache[Math.random()] = 1
    }
    cache['in'] = 1

Test runner

Ready to run.

Testing in
TestOps/sec
Standard way - Cache hit
var res;
if (keyHit in cache) {
  res = cache[keyHit];
} else {
  res = cache[keyHit] = 42;
}
ready
Standard way - Cache miss
var res;
if (keyMiss in cache) {
  res = cache[keyMiss];
} else {
  res = cache[keyMiss] = 42;
}
ready
Clever Way - Cache hit
var res = cache[keyHit];
if (res === undefined) {
  res = cache[keyHit] = 42;
}
ready
Clever Way - Cache miss
var res = cache[keyMiss];
if (res === undefined) {
  res = cache[keyMiss] = 42;
}
ready
Short Version - Cache hit
var res = cache[keyHit] || (cache[keyHit] = 42);
 
ready
Short Version - Cache miss
var res = cache[keyMiss] || (cache[keyMiss] = 42);
 
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.