fieldhoist5.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. var test = new Object();
  6. test.nokill_singleuse = function(o, b)
  7. {
  8. var x = 0;
  9. var y = 0;
  10. for (var i = 1; i < 10000; i++)
  11. {
  12. x = (o.x) & 0x3FFFF;
  13. o.x = x + y;
  14. y = (o.x) & 0xFFFF;
  15. }
  16. return x + y;
  17. }
  18. test.kill_singleuse = function(o, b)
  19. {
  20. var x = 0;
  21. var y = 0;
  22. for (var i = 1; i < 10000; i++)
  23. {
  24. x = (o.x) & 0x3FFFF;
  25. b.x = x + y;
  26. y = (o.x) & 0xFFFF;
  27. }
  28. return x + y;
  29. }
  30. test.nokill_twouse_before = function(o, b)
  31. {
  32. var x = 0;
  33. var y = 0;
  34. for (var i = 1; i < 10000; i++)
  35. {
  36. x = (o.x + o.x) & 0x3FFFF;
  37. o.x = x + y;
  38. y = (o.x) & 0xFFFF;
  39. }
  40. return x + y;
  41. }
  42. test.kill_twouse_before = function(o, b)
  43. {
  44. var x = 0;
  45. var y = 0;
  46. for (var i = 1; i < 10000; i++)
  47. {
  48. x = (o.x + o.x + o.x + o.x + o.x) & 0x3FFFF;
  49. b.x = x + y;
  50. y = (o.x) & 0xFFFF;
  51. }
  52. return x + y;
  53. }
  54. test.nokill_multiuse_before = function(o, b)
  55. {
  56. var x = 0;
  57. var y = 0;
  58. for (var i = 1; i < 10000; i++)
  59. {
  60. x = (o.x + o.x) & 0x3FFFF;
  61. o.x = x + y;
  62. y = (o.x) & 0xFFFF;
  63. }
  64. return x + y;
  65. }
  66. test.kill_multiuse_before = function(o, b)
  67. {
  68. var x = 0;
  69. var y = 0;
  70. for (var i = 1; i < 10000; i++)
  71. {
  72. x = (o.x + o.x + o.x + o.x + o.x) & 0x3FFFF;
  73. b.x = x + y;
  74. y = (o.x) & 0xFFFF;
  75. }
  76. return x + y;
  77. }
  78. test.nokill_multiuse_after = function(o, b)
  79. {
  80. var x = 0;
  81. var y = 0;
  82. for (var i = 1; i < 10000; i++)
  83. {
  84. x = (o.x) & 0x3FFFF;
  85. o.x = x + y;
  86. y = (o.x + o.x + o.x + o.x + o.x) & 0xFFFF;
  87. }
  88. return x + y;
  89. }
  90. test.kill_multiuse_after = function(o, b)
  91. {
  92. var x = 0;
  93. var y = 0;
  94. for (var i = 1; i < 10000; i++)
  95. {
  96. x = (o.x) & 0x3FFFF;
  97. b.x = x + y;
  98. y = (o.x + o.x + o.x + o.x + o.x) & 0xFFFF;
  99. }
  100. return x + y;
  101. }
  102. test.nokill_multiuse_before_and_after = function(o, b)
  103. {
  104. var x = 0;
  105. var y = 0;
  106. for (var i = 1; i < 10000; i++)
  107. {
  108. x = (o.x + o.x + o.x + o.x + o.x) & 0x3FFFF;
  109. o.x = x + y;
  110. y = (o.x + o.x + o.x + o.x + o.x) & 0xFFFF;
  111. }
  112. return x + y;
  113. }
  114. test.kill_multiuse_before_and_after = function(o, b)
  115. {
  116. var x = 0;
  117. var y = 0;
  118. for (var i = 1; i < 10000; i++)
  119. {
  120. x = (o.x + o.x + o.x + o.x + o.x) & 0x3FFFF;
  121. b.x = x + y;
  122. y = (o.x + o.x + o.x + o.x + o.x) & 0xFFFF;
  123. }
  124. return x + y;
  125. }
  126. function runtest(name, func)
  127. {
  128. var total_time = 0;
  129. var iter = 0;
  130. for (var i = 0; i < 1000; i++)
  131. {
  132. o = new Object();
  133. o.x = 1;
  134. var d = new Date();
  135. func(o, o);
  136. total_time += (new Date() - d);
  137. iter++;
  138. if (total_time > 1000)
  139. {
  140. break;
  141. }
  142. }
  143. var output = name;
  144. if (name.length < 40)
  145. {
  146. for (var i = 0; i < 40 - name.length; i++)
  147. {
  148. output += " ";
  149. }
  150. }
  151. WScript.Echo(output + ": " + (((total_time / iter) * 1000) | 0) + " (per 1000 iteration, executed " + iter + " iterations)");
  152. }
  153. for (var x in test)
  154. {
  155. runtest(x, test[x]);
  156. }