Vector3Storage.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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. });
  48. suite.add('Vector3-Float32Array', function() {
  49. var array = [];
  50. for (var i = 0; i < 100000; i++) {
  51. var v = new THREE.Vector3X(i, i, i);
  52. array.push(v);
  53. }
  54. var result = 0;
  55. for (var i = 0; i < 100000; i++) {
  56. var v = array[i];
  57. result += v.length();
  58. }
  59. });
  60. suite.add('Vector3-Array', function() {
  61. var array = [];
  62. for (var i = 0; i < 100000; i++) {
  63. var v = new THREE.Vector3Y(i, i, i);
  64. array.push(v);
  65. }
  66. var result = 0;
  67. for (var i = 0; i < 100000; i++) {
  68. var v = array[i];
  69. result += v.length();
  70. }
  71. });
  72. })();