Map vs IterableMap
JavaScript performance comparison
Preparation code
<script>
/**
* A wrapper for a harmony Map that is iterable.
* It does not allow deletion of keys however.
*/
function IterableMap() {
this._internal = new Map();
this._keys = new Array(100);
}
IterableMap.prototype.has = function(key) {
return this._internal.has(key);
};
IterableMap.prototype.get = function(key) {
return this._internal.get(key);
};
IterableMap.prototype.set = function(key, val) {
var internal = this._internal;
internal.set(key, val);
};
IterableMap.prototype.delete = function(key) {
return this._internal.delete(key);
};
IterableMap.prototype.forEach = function(cb, thisObj) {
var keys = this._keys,
internal = _internal;
for(var i = 0, il = internal.size; i < il; i++) {
var key = keys[i];
cb.call(thisObj, internal.get(key), key, this);
}
};
Object.defineProperty(IterableMap.prototype, "size", {
get: function() { return this._internal.size; }
});
</script>
<script>
Benchmark.prototype.setup = function() {
var keys = [
1,
{},
[],
"1"
];
var m1 = new Map();
var m2 = new IterableMap();
};
</script>
Preparation code output
Test runner
Warning! For accurate results, please disable Firebug before running the tests. (Why?)
Java applet disabled.
| Test | Ops/sec | |
|---|---|---|
Map |
|
pending… |
IterableMap |
|
pending… |
Compare results of other browsers
Revisions
You can edit these tests or add even more tests to this page by appending /edit to the URL. Here’s a list of current revisions for this page:
- Revision 1: published
- Revision 2: published
- Revision 3: published
- Revision 4: published
- Revision 5: published
- Revision 6: published
- Revision 7: published
- Revision 8: published
- Revision 9: published
- Revision 10: published
- Revision 11: published
- Revision 12: published
- Revision 13: published
- Revision 14: published
- Revision 15: published
- Revision 16: published
- Revision 17: published
0 comments