(function() { var THREE = {}; THREE.Vector3 = function(x, y, z) { this.x = x || 0; this.y = y || 0; this.z = z || 0; }; THREE.Vector3.prototype = { constructor: THREE.Vector3, lengthSq: function() { return this.x * this.x + this.y * this.y + this.z * this.z; }, length: function() { return Math.sqrt(this.lengthSq()); }, length2: function() { return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); } }; var a = []; for (var i = 0; i < 100000; i++) { a[i] = new THREE.Vector3(i * 0.01, i * 2, i * -1.3); } var suite = Bench.newSuite("Vector 3 Length"); suite.add('NoCallTest', function() { var result = 0; for (var i = 0; i < 100000; i++) { var v = a[i]; result += Math.sqrt(v.x * v.x + v.y * v.y + v.z * v.z); } }); suite.add('InlineCallTest', function() { var result = 0; for (var i = 0; i < 100000; i++) { result += a[i].length2(); } }); suite.add('FunctionCallTest', function() { var result = 0; for (var i = 0; i < 100000; i++) { result += a[i].length(); } }); })();