Float32Array vs Float64Array (v2)

Revision 2 of this benchmark created by Aapo Laitinen on


Preparation HTML

<script>
  function cmul1(a, b, d) {
        d[0] = a[0] * b[0];
        d[1] = a[1] * b[1];
        d[2] = a[2] * b[2];
        d[3] = a[3] * b[3];
        return d;
  }
  
  function half1(a, d) {
        d[0] = a[0] * 0.5;
        d[1] = a[1] * 0.5;
        d[2] = a[2] * 0.5;
        d[3] = a[3] * 0.5;
        return d;
  }
  
  var v1a = new Float32Array([1.1,2.1,3.1,4.1]);
  var v1b = new Float32Array([1.1,2.1,3.1,4.1]);
  var v1d = new Float32Array([0.1,0.1,0.1,0.1]);
  
  function cmul2(a, b, d) {
        d[0] = a[0] * b[0];
        d[1] = a[1] * b[1];
        d[2] = a[2] * b[2];
        d[3] = a[3] * b[3];
        return d;
  }
  
  function half2(a, d) {
        d[0] = a[0] * 0.5;
        d[1] = a[1] * 0.5;
        d[2] = a[2] * 0.5;
        d[3] = a[3] * 0.5;
        return d;
  }
  
  var v2a = new Float64Array([1.1,2.1,3.1,4.1]);
  var v2b = new Float64Array([1.1,2.1,3.1,4.1]);
  var v2d = new Float64Array([0.1,0.1,0.1,0.1]);
  
  function cmul3(a, b, d) {
        d[0] = a[0] * b[0];
        d[1] = a[1] * b[1];
        d[2] = a[2] * b[2];
        d[3] = a[3] * b[3];
        return d;
  }
  
  function half3(a, d) {
        d[0] = a[0] * 0.5;
        d[1] = a[1] * 0.5;
        d[2] = a[2] * 0.5;
        d[3] = a[3] * 0.5;
        return d;
  }
  
  var v3a = [1.1,2.1,3.1,4.1];
  var v3b = [1.1,2.1,3.1,4.1];
  var v3d = [0.1,0.1,0.1,0.1];
  
  function cmul4(a, b, d) {
        d.x = a.x * b.x;
        d.y = a.y * b.y;
        d.z = a.z * b.z;
        d.w = a.w * b.w;
        return d;
  }
  
  function half4(a, d) {
        d.x = a.x * 0.5;
        d.y = a.y * 0.5;
        d.z = a.z * 0.5;
        d.w = a.w * 0.5;
        return d;
  }
  
  var v4a = {x:1.1, y:2.1, z:3.1, w:4.1};
  var v4b = {x:1.1, y:2.1, z:3.1, w:4.1};
  var v4d = {x:0.1, y:0.1, z:0.1, w:0.1};
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
Float32Array cmul
cmul1(v1a, v1b, v1d);
ready
Float64Array cmul
cmul2(v2a, v2b, v2d);
ready
Float32Array half
half1(v1a, v1d);
ready
Float64Array half
half2(v2a, v2d);
ready
Dense float array cmul
cmul3(v3a, v3b, v3d);
ready
Dense float array half
half3(v3a, v3d);
ready
Object cmul
cmul4(v4a, v4b, v4d);
ready
Object half
half4(v4a, v4d);
ready

Revisions

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

  • Revision 1: published by Aapo Laitinen on
  • Revision 2: published by Aapo Laitinen on