You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
147 lines
2.2 KiB
147 lines
2.2 KiB
2 years ago
|
( function () {
|
||
|
|
||
|
var s = Bench.newSuite( 'Vector 3 Components' );
|
||
|
|
||
|
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,
|
||
|
setComponent: function ( index, value ) {
|
||
|
|
||
|
this[ THREE.Vector3.__indexToName[ index ] ] = value;
|
||
|
|
||
|
},
|
||
|
|
||
|
getComponent: function ( index ) {
|
||
|
|
||
|
return this[ THREE.Vector3.__indexToName[ index ] ];
|
||
|
|
||
|
},
|
||
|
|
||
|
setComponent2: function ( index, value ) {
|
||
|
|
||
|
switch ( index ) {
|
||
|
|
||
|
case 0:
|
||
|
this.x = value;
|
||
|
break;
|
||
|
case 1:
|
||
|
this.y = value;
|
||
|
break;
|
||
|
case 2:
|
||
|
this.z = value;
|
||
|
break;
|
||
|
default:
|
||
|
throw new Error( 'index is out of range: ' + index );
|
||
|
|
||
|
}
|
||
|
|
||
|
},
|
||
|
|
||
|
getComponent2: function ( index ) {
|
||
|
|
||
|
switch ( index ) {
|
||
|
|
||
|
case 0:
|
||
|
return this.x;
|
||
|
case 1:
|
||
|
return this.y;
|
||
|
case 2:
|
||
|
return this.z;
|
||
|
default:
|
||
|
throw new Error( 'index is out of range: ' + index );
|
||
|
|
||
|
}
|
||
|
|
||
|
},
|
||
|
|
||
|
|
||
|
getComponent3: function ( index ) {
|
||
|
|
||
|
if ( index === 0 ) return this.x;
|
||
|
if ( index === 1 ) return this.y;
|
||
|
if ( index === 2 ) return this.z;
|
||
|
throw new Error( 'index is out of range: ' + index );
|
||
|
|
||
|
},
|
||
|
|
||
|
getComponent4: function ( index ) {
|
||
|
|
||
|
if ( index === 0 ) return this.x; else if ( index === 1 ) return this.y; else if ( index === 2 ) return this.z;
|
||
|
else
|
||
|
throw new Error( 'index is out of range: ' + index );
|
||
|
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|
||
|
THREE.Vector3.__indexToName = {
|
||
|
0: 'x',
|
||
|
1: 'y',
|
||
|
2: 'z'
|
||
|
};
|
||
|
|
||
|
var a = [];
|
||
|
for ( var i = 0; i < 100000; i ++ ) {
|
||
|
|
||
|
a[ i ] = new THREE.Vector3( i * 0.01, i * 2, i * - 1.3 );
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
s.add( 'IndexToName', function () {
|
||
|
|
||
|
var result = 0;
|
||
|
for ( var i = 0; i < 100000; i ++ ) {
|
||
|
|
||
|
result += a[ i ].getComponent( i % 3 );
|
||
|
|
||
|
}
|
||
|
|
||
|
} );
|
||
|
|
||
|
s.add( 'SwitchStatement', function () {
|
||
|
|
||
|
var result = 0;
|
||
|
for ( var i = 0; i < 100000; i ++ ) {
|
||
|
|
||
|
result += a[ i ].getComponent2( i % 3 );
|
||
|
|
||
|
}
|
||
|
|
||
|
} );
|
||
|
|
||
|
s.add( 'IfAndReturnSeries', function () {
|
||
|
|
||
|
var result = 0;
|
||
|
for ( var i = 0; i < 100000; i ++ ) {
|
||
|
|
||
|
result += a[ i ].getComponent3( i % 3 );
|
||
|
|
||
|
}
|
||
|
|
||
|
} );
|
||
|
|
||
|
s.add( 'IfReturnElseSeries', function () {
|
||
|
|
||
|
var result = 0;
|
||
|
for ( var i = 0; i < 100000; i ++ ) {
|
||
|
|
||
|
result += a[ i ].getComponent4( i % 3 );
|
||
|
|
||
|
}
|
||
|
|
||
|
} );
|
||
|
|
||
|
} )();
|