On my microbenchmark this doubles the speed of common operations on ES6 Map. I
think it's a simplification too.

Before (times in ms):

Read 514
Update 1083
Set/delete 2075

After:

Read 231
Update 484
Set/delete 1619



The microbenchmark:

function MyKey() {
  this.x = "foo";
}

function setup(key) {
  var m = new Map();
  m.set(key, 42);
  for (var i = 0; i < 20; i++) {
    m.set(new MyKey(), 4);
  }
  return m;
}

function read(map, key) {
  for (var i = 0; i < 10000000; i++) {
    if (map.get(key) != 42) {
      blowup();
    }
  }
}

function update(map, key) {
  for (var i = 0; i < 5000000; i++) {
    map.set(key, 41);
    if (map.get(key) != 41) {
      blowup();
    }
    map.set(key, 42);
    if (map.get(key) != 42) {
      blowup();
    }
  }
}

function setdelete(map, key) {
  for (var i = 0; i < 5000000; i++) {
    map.delete(key, 41);
    if (map.get(key) != undefined) {
      blowup();
    }
    map.set(key, 42);
    if (map.get(key) != 42) {
      blowup();
    }
  }
}

var key = new MyKey();
var map = setup(key);

var start = new Date();
read(map, key);
var end = new Date();
print("Read " + (end - start));

var start = new Date();
update(map, key);
var end = new Date();
print("Update " + (end - start));

var start = new Date();
setdelete(map, key);
var end = new Date();
print("Set/delete " + (end - start));


https://codereview.chromium.org/1142493002/

--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to