array indexof for primitives
JavaScript performance comparison
Info
When it comes to crossbrowser - i was asking myself which was the fastest solution to find a (primitve) value within an array.
Thought of something toString() ... well lets see
Preparation code
<script src="//ajax.googleapis.com/ajax/libs/dojo/1/dojo/dojo.xd.js"></script>
<script>
Benchmark.prototype.setup = function() {
var arr = [];
while(arr.length<500){
arr.push(arr.length);
}
Array.prototype.ECMA_indexOf = function(searchElement /*, fromIndex */){
"use strict";
if (this === void 0 || this === null)
throw new TypeError();
var t = Object(this);
var len = t.length >>> 0;
if (len === 0)
return -1;
var n = 0;
if (arguments.length > 0){
n = Number(arguments[1]);
if (n !== n)
n = 0;
else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0))
n = (n > 0 || -1) * Math.floor(Math.abs(n));
}
if (n >= len)
return -1;
var k = n >= 0
? n
: Math.max(len - Math.abs(n), 0);
for (; k < len; k++){
if (k in t && t[k] === searchElement)
return k;
}
return -1;
};
};
</script>
Preparation code output
Test runner
Warning! For accurate results, please disable Firebug before running the tests. (Why?)
Java applet disabled.
| Test | Ops/sec | |
|---|---|---|
Array.indexOf |
|
pending… |
String.indexOf |
|
pending… |
simple for loop |
|
pending… |
ecma array.indexOf |
|
pending… |
dojo.indexOf |
|
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 3: published
0 comments