Benchfib.deploy.js 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. smalltalk.addPackage('Benchfib');
  2. smalltalk.addClass('Benchfib', smalltalk.Object, [], 'Benchfib');
  3. smalltalk.addMethod(
  4. "_main",
  5. smalltalk.method({
  6. selector: "main",
  7. fn: function (){
  8. var self=this;
  9. var result;
  10. return smalltalk.withContext(function($ctx1) { result=_st((0))._tinyBenchmarks();
  11. _st(console)._log_(_st("0 tinyBenchmarks => ").__comma(result));
  12. return self}, function($ctx1) {$ctx1.fill(self,"main",{result:result},smalltalk.Benchfib.klass)})},
  13. messageSends: ["tinyBenchmarks", "log:", ","]}),
  14. smalltalk.Benchfib.klass);
  15. smalltalk.addMethod(
  16. "_benchFib",
  17. smalltalk.method({
  18. selector: "benchFib",
  19. fn: function (){
  20. var self=this;
  21. return smalltalk.withContext(function($ctx1) { var $2,$1;
  22. $2=_st(self).__lt((2));
  23. if(smalltalk.assert($2)){
  24. $1=(1);
  25. } else {
  26. $1=_st(_st(_st(_st(self).__minus((1)))._benchFib()).__plus(_st(_st(self).__minus((2)))._benchFib())).__plus((1));
  27. };
  28. return $1;
  29. }, function($ctx1) {$ctx1.fill(self,"benchFib",{},smalltalk.Number)})},
  30. messageSends: ["ifTrue:ifFalse:", "+", "benchFib", "-", "<"]}),
  31. smalltalk.Number);
  32. smalltalk.addMethod(
  33. "_benchmark",
  34. smalltalk.method({
  35. selector: "benchmark",
  36. fn: function (){
  37. var self=this;
  38. var size,flags,prime,k,count;
  39. function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
  40. return smalltalk.withContext(function($ctx1) { var $1,$2;
  41. size=(8190);
  42. _st((1))._to_do_(self,(function(iter){
  43. return smalltalk.withContext(function($ctx2) { count=(0);
  44. count;
  45. flags=_st($Array())._new();
  46. flags;
  47. _st(size)._timesRepeat_((function(){
  48. return smalltalk.withContext(function($ctx3) { return _st(flags)._add_(true);
  49. }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
  50. return _st((1))._to_do_(size,(function(i){
  51. return smalltalk.withContext(function($ctx3) { $1=_st(flags)._at_(i);
  52. if(smalltalk.assert($1)){
  53. prime=_st(i).__plus((1));
  54. prime;
  55. k=_st(i).__plus(prime);
  56. k;
  57. _st((function(){
  58. return smalltalk.withContext(function($ctx4) { return _st(k).__lt_eq(size);
  59. }, function($ctx4) {$ctx4.fillBlock({},$ctx1)})}))._whileTrue_((function(){
  60. return smalltalk.withContext(function($ctx4) { _st(flags)._at_put_(k,false);
  61. k=_st(k).__plus(prime);
  62. return k;
  63. }, function($ctx4) {$ctx4.fillBlock({},$ctx1)})}));
  64. count=_st(count).__plus((1));
  65. return count;
  66. };
  67. }, function($ctx3) {$ctx3.fillBlock({i:i},$ctx1)})}));
  68. }, function($ctx2) {$ctx2.fillBlock({iter:iter},$ctx1)})}));
  69. $2=count;
  70. return $2;
  71. }, function($ctx1) {$ctx1.fill(self,"benchmark",{size:size,flags:flags,prime:prime,k:k,count:count},smalltalk.Number)})},
  72. messageSends: ["to:do:", "new", "timesRepeat:", "add:", "ifTrue:", "+", "whileTrue:", "at:put:", "<=", "at:"]}),
  73. smalltalk.Number);
  74. smalltalk.addMethod(
  75. "_jsbenchFib",
  76. smalltalk.method({
  77. selector: "jsbenchFib",
  78. fn: function (){
  79. var self=this;
  80. return smalltalk.withContext(function($ctx1) { if (this < 2) {
  81. return 1;
  82. } else {
  83. return (this-1)._jsbenchFib() + (this-2)._jsbenchFib() + 1;};
  84. return self}, function($ctx1) {$ctx1.fill(self,"jsbenchFib",{},smalltalk.Number)})},
  85. messageSends: []}),
  86. smalltalk.Number);
  87. smalltalk.addMethod(
  88. "_jsbenchmark",
  89. smalltalk.method({
  90. selector: "jsbenchmark",
  91. fn: function (){
  92. var self=this;
  93. return smalltalk.withContext(function($ctx1) {
  94. var size = 8190;
  95. var count;
  96. for (var z=0;z<this;z++) {
  97. count = 0;
  98. var flags = new Array();
  99. for (var p=0; p<size; p++) {
  100. flags[p] = true;
  101. }
  102. for (var i=1;i<=size;i++) {
  103. if (flags[i-1]) {
  104. var prime = i+1;
  105. var k = i + prime;
  106. while (k <= size) {
  107. flags[k-1] = false;
  108. k = k + prime;
  109. }
  110. count = count + 1;
  111. }
  112. }
  113. }
  114. return count;
  115. return self}, function($ctx1) {$ctx1.fill(self,"jsbenchmark",{},smalltalk.Number)})},
  116. messageSends: []}),
  117. smalltalk.Number);
  118. smalltalk.addMethod(
  119. "_jstinyBenchmarks",
  120. smalltalk.method({
  121. selector: "jstinyBenchmarks",
  122. fn: function (){
  123. var self=this;
  124. var t1,t2,r,n1,n2;
  125. function $Date(){return smalltalk.Date||(typeof Date=="undefined"?nil:Date)}
  126. return smalltalk.withContext(function($ctx1) { var $1;
  127. n1=(1);
  128. _st((function(){
  129. return smalltalk.withContext(function($ctx2) { t1=_st($Date())._millisecondsToRun_((function(){
  130. return smalltalk.withContext(function($ctx3) { return _st(n1)._jsbenchmark();
  131. }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
  132. t1;
  133. return _st(t1).__lt((1000));
  134. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
  135. return smalltalk.withContext(function($ctx2) { n1=_st(n1).__star((2));
  136. return n1;
  137. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
  138. n2=(28);
  139. _st((function(){
  140. return smalltalk.withContext(function($ctx2) { t2=_st($Date())._millisecondsToRun_((function(){
  141. return smalltalk.withContext(function($ctx3) { r=_st(n2)._jsbenchFib();
  142. return r;
  143. }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
  144. t2;
  145. return _st(t2).__lt((1000));
  146. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
  147. return smalltalk.withContext(function($ctx2) { n2=_st(n2).__plus((1));
  148. return n2;
  149. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
  150. $1=_st(_st(_st(_st(_st(_st(_st(n1).__star((500000))).__star((1000))).__slash(t1))._printString()).__comma(" bytecodes/sec; ")).__comma(_st(_st(_st(r).__star((1000))).__slash(t2))._printString())).__comma(" sends/sec");
  151. return $1;
  152. }, function($ctx1) {$ctx1.fill(self,"jstinyBenchmarks",{t1:t1,t2:t2,r:r,n1:n1,n2:n2},smalltalk.Number)})},
  153. messageSends: ["whileTrue:", "*", "millisecondsToRun:", "jsbenchmark", "<", "+", "jsbenchFib", ",", "printString", "/"]}),
  154. smalltalk.Number);
  155. smalltalk.addMethod(
  156. "_tinyBenchmarks",
  157. smalltalk.method({
  158. selector: "tinyBenchmarks",
  159. fn: function (){
  160. var self=this;
  161. var t1,t2,r,n1,n2;
  162. function $Date(){return smalltalk.Date||(typeof Date=="undefined"?nil:Date)}
  163. return smalltalk.withContext(function($ctx1) { var $1;
  164. n1=(1);
  165. _st((function(){
  166. return smalltalk.withContext(function($ctx2) { t1=_st($Date())._millisecondsToRun_((function(){
  167. return smalltalk.withContext(function($ctx3) { return _st(n1)._benchmark();
  168. }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
  169. t1;
  170. return _st(t1).__lt((1000));
  171. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
  172. return smalltalk.withContext(function($ctx2) { n1=_st(n1).__star((2));
  173. return n1;
  174. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
  175. n2=(16);
  176. _st((function(){
  177. return smalltalk.withContext(function($ctx2) { t2=_st($Date())._millisecondsToRun_((function(){
  178. return smalltalk.withContext(function($ctx3) { r=_st(n2)._benchFib();
  179. return r;
  180. }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
  181. t2;
  182. return _st(t2).__lt((1000));
  183. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
  184. return smalltalk.withContext(function($ctx2) { n2=_st(n2).__plus((1));
  185. return n2;
  186. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
  187. $1=_st(_st(_st(_st(_st(_st(_st(n1).__star((500000))).__star((1000))).__slash(t1))._printString()).__comma(" bytecodes/sec; ")).__comma(_st(_st(_st(r).__star((1000))).__slash(t2))._printString())).__comma(" sends/sec");
  188. return $1;
  189. }, function($ctx1) {$ctx1.fill(self,"tinyBenchmarks",{t1:t1,t2:t2,r:r,n1:n1,n2:n2},smalltalk.Number)})},
  190. messageSends: ["whileTrue:", "*", "millisecondsToRun:", "benchmark", "<", "+", "benchFib", ",", "printString", "/"]}),
  191. smalltalk.Number);