float index vs var in closures (v5)

Revision 5 of this benchmark created on


Preparation HTML

<script>
  var globalConst1 = new Float32Array([1]);
  var global1 = 1;

  function makeConstClosure(n) {
    var value = new Float32Array([n]);

    return function(n) {
      value[0] = n
      return value[0]
    }
  }

  var cc1 = makeConstClosure(1);
 
  function makeVarClosure(n) {
    var value = n;

    return function(n) {
      value = n;
      return value
    }
  }

  var vc1 = makeVarClosure(1);
 
  var gcc1 = function(n) {
       globalConst1[0] = n
       return globalConst1[0]
      };
  var gvc1 = function(n) {
        global1 = n
        return global1
      };

  var count = 5000;
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
float
for (var i = 0; i < count; i++) {
  if (isNaN(cc1(i))) throw new Error();
}
ready
var
for (var i = 0; i < count; i++) {
  if (isNaN(vc1(i))) throw new Error();
}
ready
global float
for (var i = 0; i < count; i++) {
  if (isNaN(gcc1(i))) throw new Error();
}
ready
global var
for (var i = 0; i < count; i++) {
  if (isNaN(gvc1(i))) throw new Error();
}
ready

Revisions

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