v1
2/17/2020 by Matthew 2/17/202000
Setup HTML - click to add setup HTML
disable setup JavaScript
Setup JavaScript
  function defineGetter(obj) {
    Object.defineProperty(obj, "prop", {
       enumerable: true,
       configurable: true,
       get() { return obj.prop_ },
    });
    obj.prop_ = 1;
  }
  

  var definedOnInstance = function () {
   	defineGetter(this);
  }

  function Base() {
  }
  var numDefinedOnPrototype = 10;
  var definedOnPrototype = [];
  for (var i = 0; i < numDefinedOnPrototype; i++) {
    var o = new Base();
    defineGetter(o);
    definedOnPrototype.push(o);    
  }


  var count = 50000;
  var definedOnInstanceArray = new Array(count);
  var definedOnOnePrototypeArray = new Array(count);
  var definedOnMultiPrototypeArray = new Array(count)

  for (var i = 0; i < count; i++) {
    definedOnInstanceArray[i] = new definedOnInstance();
    definedOnOnePrototypeArray[i] = Object.create(definedOnPrototype[0]);
    definedOnMultiPrototypeArray[i] = Object.create(definedOnPrototype[i % numDefinedOnPrototype]);
  }
delete caserun single casemove downdrag and drop case


ready



var sum = 0;
for (var i = 0, a = definedOnInstanceArray; i < count; i++) {
  sum += a[i].prop;
}
delete caserun single casemove upmove downdrag and drop case


ready



var sum = 0;
for (var i = 0, a = definedOnOnePrototypeArray; i < count; i++) {
  sum += a[i].prop;
}
delete caserun single casemove updrag and drop case


ready



var sum = 0;
for (var i = 0, a = definedOnMultiPrototypeArray; i < count; i++) {
  sum += a[i].prop;
}
Test Case - click to add another test case
Teardown JS - click to add teardown JavaScript
Output (DOM) - click to monitor output (DOM) while test is running
RUN