(function() { 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, length: function() { return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); } }; THREE.Vector3X = function(x, y, z) { var elements = this.elements = new Float32Array(3); elements[0] = x || 0; elements[1] = y || 1; elements[2] = z || 2; }; THREE.Vector3X.prototype = { constructor: THREE.Vector3X, length: function() { return Math.sqrt(this.elements[0] * this.elements[0] + this.elements[1] * this.elements[1] + this.elements[2] * this.elements[2]); } }; THREE.Vector3Y = function(x, y, z) { this.elements = [x || 0, y || 1, z || 2]; }; THREE.Vector3Y.prototype = { constructor: THREE.Vector3Y, length: function() { return Math.sqrt(this.elements[0] * this.elements[0] + this.elements[1] * this.elements[1] + this.elements[2] * this.elements[2]); } }; var suite = Bench.newSuite("Vector 3 Storage"); suite.add('Vector3-Set', function() { var array = []; for (var i = 0; i < 100000; i++) { var v = new THREE.Vector3(i, i, i); array.push(v); } var result = 0; for (var i = 0; i < 100000; i++) { var v = array[i]; result += v.length(); } }); suite.add('Vector3-Float32Array', function() { var array = []; for (var i = 0; i < 100000; i++) { var v = new THREE.Vector3X(i, i, i); array.push(v); } var result = 0; for (var i = 0; i < 100000; i++) { var v = array[i]; result += v.length(); } }); suite.add('Vector3-Array', function() { var array = []; for (var i = 0; i < 100000; i++) { var v = new THREE.Vector3Y(i, i, i); array.push(v); } var result = 0; for (var i = 0; i < 100000; i++) { var v = array[i]; result += v.length(); } }); })();