1 | THREE = {};
|
---|
2 |
|
---|
3 | THREE.Vector3 = function ( x, y, z ) {
|
---|
4 |
|
---|
5 | this.x = x || 0;
|
---|
6 | this.y = y || 0;
|
---|
7 | this.z = z || 0;
|
---|
8 |
|
---|
9 | };
|
---|
10 |
|
---|
11 | THREE.Vector3.prototype = {
|
---|
12 |
|
---|
13 | constructor: THREE.Vector3,
|
---|
14 |
|
---|
15 | length: function () {
|
---|
16 |
|
---|
17 | return Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );
|
---|
18 |
|
---|
19 | }
|
---|
20 |
|
---|
21 | };
|
---|
22 |
|
---|
23 | THREE.Vector3X = function ( x, y, z ) {
|
---|
24 |
|
---|
25 | var elements = this.elements = new Float32Array( 3 );
|
---|
26 | elements[0] = x || 0;
|
---|
27 | elements[1] = y || 1;
|
---|
28 | elements[2] = z || 2;
|
---|
29 |
|
---|
30 | };
|
---|
31 |
|
---|
32 | THREE.Vector3X.prototype = {
|
---|
33 |
|
---|
34 | constructor: THREE.Vector3X,
|
---|
35 |
|
---|
36 | length: function () {
|
---|
37 |
|
---|
38 | return Math.sqrt( this.elements[0] * this.elements[0] + this.elements[1] * this.elements[1] + this.elements[2] * this.elements[2] );
|
---|
39 |
|
---|
40 | }
|
---|
41 |
|
---|
42 | };
|
---|
43 |
|
---|
44 |
|
---|
45 | THREE.Vector3Y = function ( x, y, z ) {
|
---|
46 |
|
---|
47 | this.elements = [ x || 0, y || 1, z || 2 ];
|
---|
48 |
|
---|
49 | };
|
---|
50 |
|
---|
51 | THREE.Vector3Y.prototype = {
|
---|
52 |
|
---|
53 | constructor: THREE.Vector3Y,
|
---|
54 |
|
---|
55 | length: function () {
|
---|
56 |
|
---|
57 | return Math.sqrt( this.elements[0] * this.elements[0] + this.elements[1] * this.elements[1] + this.elements[2] * this.elements[2] );
|
---|
58 |
|
---|
59 | }
|
---|
60 |
|
---|
61 | };
|
---|
62 |
|
---|
63 |
|
---|
64 | var suite = new Benchmark.Suite;
|
---|
65 |
|
---|
66 | suite.add('Vector3-Set', function() {
|
---|
67 |
|
---|
68 | var array = [];
|
---|
69 | for ( var i = 0; i < 100000; i ++ ) {
|
---|
70 | var v = new THREE.Vector3( i, i, i );
|
---|
71 | array.push( v );
|
---|
72 | }
|
---|
73 |
|
---|
74 | var result = 0;
|
---|
75 | for ( var i = 0; i < 100000; i ++ ) {
|
---|
76 | var v = array[i];
|
---|
77 | result += v.length();
|
---|
78 | }
|
---|
79 | });
|
---|
80 |
|
---|
81 | suite.add('Vector3-Float32Array', function() {
|
---|
82 |
|
---|
83 | var array = [];
|
---|
84 | for ( var i = 0; i < 100000; i ++ ) {
|
---|
85 | var v = new THREE.Vector3X( i, i, i );
|
---|
86 | array.push( v );
|
---|
87 | }
|
---|
88 |
|
---|
89 | var result = 0;
|
---|
90 | for ( var i = 0; i < 100000; i ++ ) {
|
---|
91 | var v = array[i];
|
---|
92 | result += v.length();
|
---|
93 | }
|
---|
94 | });
|
---|
95 |
|
---|
96 | suite.add('Vector3-Array', function() {
|
---|
97 |
|
---|
98 | var array = [];
|
---|
99 | for ( var i = 0; i < 100000; i ++ ) {
|
---|
100 | var v = new THREE.Vector3Y( i, i, i );
|
---|
101 | array.push( v );
|
---|
102 | }
|
---|
103 |
|
---|
104 | var result = 0;
|
---|
105 | for ( var i = 0; i < 100000; i ++ ) {
|
---|
106 | var v = array[i];
|
---|
107 | result += v.length();
|
---|
108 | }
|
---|
109 | });
|
---|
110 |
|
---|
111 | suite.on('cycle', function(event, bench) {
|
---|
112 | console.log(String(event.target));
|
---|
113 | });
|
---|
114 |
|
---|
115 | suite.on('complete', function() {
|
---|
116 | console.log('Fastest is ' + this.filter('fastest').pluck('name'));
|
---|
117 | console.log( "Done" );
|
---|
118 | });
|
---|
119 |
|
---|
120 | suite.run(true); |
---|