Vector3Storage.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. THREE = {};
  2. THREE.Vector3 = function ( x, y, z ) {
  3. this.x = x || 0;
  4. this.y = y || 0;
  5. this.z = z || 0;
  6. };
  7. THREE.Vector3.prototype = {
  8. constructor: THREE.Vector3,
  9. length: function () {
  10. return Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );
  11. }
  12. };
  13. THREE.Vector3X = function ( x, y, z ) {
  14. var elements = this.elements = new Float32Array( 3 );
  15. elements[0] = x || 0;
  16. elements[1] = y || 1;
  17. elements[2] = z || 2;
  18. };
  19. THREE.Vector3X.prototype = {
  20. constructor: THREE.Vector3X,
  21. length: function () {
  22. return Math.sqrt( this.elements[0] * this.elements[0] + this.elements[1] * this.elements[1] + this.elements[2] * this.elements[2] );
  23. }
  24. };
  25. THREE.Vector3Y = function ( x, y, z ) {
  26. this.elements = [ x || 0, y || 1, z || 2 ];
  27. };
  28. THREE.Vector3Y.prototype = {
  29. constructor: THREE.Vector3Y,
  30. length: function () {
  31. return Math.sqrt( this.elements[0] * this.elements[0] + this.elements[1] * this.elements[1] + this.elements[2] * this.elements[2] );
  32. }
  33. };
  34. var suite = new Benchmark.Suite;
  35. suite.add('Vector3-Set', function() {
  36. var array = [];
  37. for ( var i = 0; i < 100000; i ++ ) {
  38. var v = new THREE.Vector3( i, i, i );
  39. array.push( v );
  40. }
  41. var result = 0;
  42. for ( var i = 0; i < 100000; i ++ ) {
  43. var v = array[i];
  44. result += v.length();
  45. }
  46. });
  47. suite.add('Vector3-Float32Array', function() {
  48. var array = [];
  49. for ( var i = 0; i < 100000; i ++ ) {
  50. var v = new THREE.Vector3X( i, i, i );
  51. array.push( v );
  52. }
  53. var result = 0;
  54. for ( var i = 0; i < 100000; i ++ ) {
  55. var v = array[i];
  56. result += v.length();
  57. }
  58. });
  59. suite.add('Vector3-Array', function() {
  60. var array = [];
  61. for ( var i = 0; i < 100000; i ++ ) {
  62. var v = new THREE.Vector3Y( i, i, i );
  63. array.push( v );
  64. }
  65. var result = 0;
  66. for ( var i = 0; i < 100000; i ++ ) {
  67. var v = array[i];
  68. result += v.length();
  69. }
  70. });
  71. suite.on('cycle', function(event, bench) {
  72. console.log(String(event.target));
  73. });
  74. suite.on('complete', function() {
  75. console.log('Fastest is ' + this.filter('fastest').pluck('name'));
  76. console.log( "Done" );
  77. });
  78. suite.run(true);