Vector3Storage.js 2.0 KB

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