native vs typed js array speed

JavaScript performance comparison

Revision 32 of this test case created by

Preparation code

<script>
  var arraySize = 1000;
  
  var typedArray = new Float32Array(4 * arraySize);
  var nativeArray = new Array(4 * arraySize);
  for (var i =0; i < arraySize; ++i) {
    typedArray[i] = i % 2 ? 1/i : NaN;
    nativeArray[i] = i % 2 ? 1/i : NaN;
  }
</script>
      
<script>
Benchmark.prototype.setup = function() {
  var sum = 0;

};

Benchmark.prototype.teardown = function() {
  if (!sum == 5000) throw Error("Invalid Result " + sum);

};
</script>

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in CCBot 2.0.0 / Other 0.0.0
Test Ops/sec
Native array isNaN
//Write
for (var i = arraySize; i; i--) {
 nativeArray[i] = i;
}

//Read
for (var i = arraySize; i; i--) {
 sum += +isNaN(nativeArray[i]);
}
pending…
Typed array isNaN
//Write
for (var i = arraySize; i; i--) {
 typedArray[i] = i;
}

//Read
for (var i = arraySize; i; i--) {
 sum += +isNaN(typedArray[i]);
}
pending…
Native Array n[i]!==n[i]
//Write
for (var i = arraySize; i; i--) {
 nativeArray[i] = i;
}

//Read
for (var i = arraySize; i; i--) {
 sum += +(nativeArray[i]!==nativeArray[i]);
}
pending…
Typed array n[i]!=n[i]
//Write
for (var i = arraySize; i; i--) {
 typedArray[i] = i;
}

//Read
for (var i = arraySize; i; i--) {
 sum += +(typedArray[i]!==typedArray[i]);
}
pending…
Native Array n!==n
//Write
for (var i = arraySize; i; i--) {
 nativeArray[i] = i;
}

//Read
for (var i = arraySize; i; i--) {
 var n = nativeArray[i]
 sum += +(n!==n);
}
pending…
Typed array n!==n
//Write
for (var i = arraySize; i; i--) {
 typedArray[i] = i;
}

//Read
for (var i = arraySize; i; i--) {
 var n = typedArray[i];
 sum += +(n!==n);
}
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.

0 Comments