Float32Array.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. var array = new Float32Array( 10000 * 3 );
  2. var value = new THREE.Vector3();
  3. var value2 = [0,0,0];
  4. var value3 = new Float32Array( 3 );
  5. for( var j = 0, jl = array.length; j < jl; j ++ ) {
  6. array[j] = j;
  7. }
  8. var Float32ArrayCopyTest = function( array ) {
  9. var x, y, z;
  10. for (var i = 0, il = array.length / 3; i < il; i += 3) {
  11. x = array[i + 0];
  12. y = array[i + 1];
  13. z = array[i + 2];
  14. x *= 1.01;
  15. y *= 1.03;
  16. z *= 0.98;
  17. array[i + 0] = x;
  18. array[i + 1] = y;
  19. array[i + 2] = z;
  20. }
  21. };
  22. var Float32ArrayDirectTest = function( array ) {
  23. for (var i = 0, il = array.length / 3; i < il; i += 3) {
  24. array[i + 0] *= 1.01;
  25. array[i + 1] *= 1.03;
  26. array[i + 2] *= 0.98;
  27. }
  28. };
  29. var Float32ArrayVector3CopyTest = function( array ) {
  30. for (var i = 0, il = array.length / 3; i < il; i += 3) {
  31. value.x = array[i + 0];
  32. value.y = array[i + 1];
  33. value.z = array[i + 2];
  34. value.x *= 1.01;
  35. value.y *= 1.03;
  36. value.z *= 0.98;
  37. array[i + 0] = value.x;
  38. array[i + 1] = value.y;
  39. array[i + 2] = value.z;
  40. }
  41. };
  42. var Float32ArrayArrayCopyTest = function( array ) {
  43. for (var i = 0, il = array.length / 3; i < il; i += 3) {
  44. value2[0] = array[i + 0];
  45. value2[1] = array[i + 1];
  46. value2[2] = array[i + 2];
  47. value2[0] *= 1.01;
  48. value2[1] *= 1.03;
  49. value2[2] *= 0.98;
  50. array[i + 0] = value2[0];
  51. array[i + 1] = value2[1];
  52. array[i + 2] = value2[2];
  53. }
  54. };
  55. var Float32ArrayFloat32ArrayCopyTest = function( array ) {
  56. for (var i = 0, il = array.length / 3; i < il; i += 3) {
  57. value3[0] = array[i + 0];
  58. value3[1] = array[i + 1];
  59. value3[2] = array[i + 2];
  60. value3[0] *= 1.01;
  61. value3[1] *= 1.03;
  62. value3[2] *= 0.98;
  63. array[i + 0] = value3[0];
  64. array[i + 1] = value3[1];
  65. array[i + 2] = value3[2];
  66. }
  67. };
  68. var suite = new Benchmark.Suite;
  69. suite.add('Float32CopyArray', function() {
  70. Float32ArrayCopyTest( array );
  71. });
  72. suite.add('Float32DirectArray', function() {
  73. Float32ArrayDirectTest( array );
  74. });
  75. suite.add('Float32ArrayVector3CopyTest', function() {
  76. Float32ArrayVector3CopyTest( array );
  77. });
  78. suite.add('Float32ArrayArrayCopyTest', function() {
  79. Float32ArrayArrayCopyTest( array );
  80. });
  81. suite.add('Float32ArrayFloat32ArrayCopyTest', function() {
  82. Float32ArrayFloat32ArrayCopyTest( array );
  83. });
  84. suite.on('cycle', function(event, bench) {
  85. console.log(String(event.target));
  86. });
  87. suite.on('complete', function() {
  88. console.log('Fastest is ' + this.filter('fastest').pluck('name'));
  89. console.log( "Done" );
  90. });
  91. suite.run(true);
粤ICP备19079148号