1 |
|
---|
2 | var input = new Float32Array( 10000 * 3 );
|
---|
3 | var output = new Float32Array( 10000 * 3 );
|
---|
4 |
|
---|
5 | for( var j = 0, jl = input.length; j < jl; j ++ ) {
|
---|
6 | input[j] = j;
|
---|
7 | }
|
---|
8 |
|
---|
9 | var inputVectors = [];
|
---|
10 | var outputVectors = [];
|
---|
11 |
|
---|
12 | for( var j = 0, jl = input.length/3; j < jl; j ++ ) {
|
---|
13 | inputVectors.push( new THREE.Vector3( j*3, j*3+1, j*3+2 ) );
|
---|
14 | outputVectors.push( new THREE.Vector3() );
|
---|
15 | }
|
---|
16 |
|
---|
17 | var suite = new Benchmark.Suite;
|
---|
18 |
|
---|
19 | suite.add('Float32Array-Float32Array', function() {
|
---|
20 | var value3 = new Float32Array( 3 );
|
---|
21 | for (var i = 0, il = input.length / 3; i < il; i += 3) {
|
---|
22 | value3[0] = input[i + 0];
|
---|
23 | value3[1] = input[i + 1];
|
---|
24 | value3[2] = input[i + 2];
|
---|
25 | value3[0] *= 1.01;
|
---|
26 | value3[1] *= 1.03;
|
---|
27 | value3[2] *= 0.98;
|
---|
28 | output[i + 0] = value3[0];
|
---|
29 | output[i + 1] = value3[1];
|
---|
30 | output[i + 2] = value3[2];
|
---|
31 | }
|
---|
32 | });
|
---|
33 |
|
---|
34 | suite.add('Float32Array-Array', function() {
|
---|
35 | var value2 = [0,0,0];
|
---|
36 | for (var i = 0, il = input.length / 3; i < il; i += 3) {
|
---|
37 | value2[0] = input[i + 0];
|
---|
38 | value2[1] = input[i + 1];
|
---|
39 | value2[2] = input[i + 2];
|
---|
40 | value2[0] *= 1.01;
|
---|
41 | value2[1] *= 1.03;
|
---|
42 | value2[2] *= 0.98;
|
---|
43 | output[i + 0] = value2[0];
|
---|
44 | output[i + 1] = value2[1];
|
---|
45 | output[i + 2] = value2[2];
|
---|
46 | }
|
---|
47 | });
|
---|
48 |
|
---|
49 | suite.add('Float32Array-Literal', function() {
|
---|
50 | var x, y, z;
|
---|
51 | for (var i = 0, il = input.length / 3; i < il; i += 3) {
|
---|
52 | x = input[i + 0];
|
---|
53 | y = input[i + 1];
|
---|
54 | z = input[i + 2];
|
---|
55 | x *= 1.01;
|
---|
56 | y *= 1.03;
|
---|
57 | z *= 0.98;
|
---|
58 | output[i + 0] = x;
|
---|
59 | output[i + 1] = y;
|
---|
60 | output[i + 2] = z;
|
---|
61 | }
|
---|
62 | });
|
---|
63 |
|
---|
64 | suite.add('Float32Array-Vector3', function() {
|
---|
65 | var value = new THREE.Vector3();
|
---|
66 | for (var i = 0, il = input.length / 3; i < il; i += 3) {
|
---|
67 | value.x = input[i + 0];
|
---|
68 | value.y = input[i + 1];
|
---|
69 | value.z = input[i + 2];
|
---|
70 | value.x *= 1.01;
|
---|
71 | value.y *= 1.03;
|
---|
72 | value.z *= 0.98;
|
---|
73 | output[i + 0] = value.x;
|
---|
74 | output[i + 1] = value.y;
|
---|
75 | output[i + 2] = value.z;
|
---|
76 | }
|
---|
77 | });
|
---|
78 |
|
---|
79 | suite.add('Vector3Array-Direct', function() {
|
---|
80 | for (var i = 0, il = inputVectors.length; i < il; i ++ ) {
|
---|
81 | outputVectors[i].copy( inputVectors[i] );
|
---|
82 | outputVectors[i].x *= 1.01;
|
---|
83 | outputVectors[i].y *= 1.03;
|
---|
84 | outputVectors[i].z *= 0.98;
|
---|
85 | }
|
---|
86 | });
|
---|
87 |
|
---|
88 | suite.add('Vector3Array-Vector3', function() {
|
---|
89 | var value = new THREE.Vector3();
|
---|
90 | for (var i = 0, il = inputVectors.length; i < il; i ++ ) {
|
---|
91 | value.copy( inputVectors[i] );
|
---|
92 | value.x *= 1.01;
|
---|
93 | value.y *= 1.03;
|
---|
94 | value.z *= 0.98;
|
---|
95 | outputVectors[i].copy( value );
|
---|
96 | }
|
---|
97 | });
|
---|
98 |
|
---|
99 | suite.on('cycle', function(event, bench) {
|
---|
100 | console.log(String(event.target));
|
---|
101 | });
|
---|
102 |
|
---|
103 | suite.on('complete', function() {
|
---|
104 | console.log('Fastest is ' + this.filter('fastest').pluck('name'));
|
---|
105 | console.log( "Done" );
|
---|
106 | });
|
---|
107 |
|
---|
108 | suite.run(true); |
---|