Benchfib.deploy.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. smalltalk.addClass('Benchfib', smalltalk.Object, [], 'Benchfib');
  2. smalltalk.addMethod(
  3. '_main',
  4. smalltalk.method({
  5. selector: 'main',
  6. fn: function (){
  7. var self=this;
  8. var result=nil;
  9. result=smalltalk.send((0), "_tinyBenchmarks", []);
  10. smalltalk.send(console, "_log_", [smalltalk.send(unescape("0%20tinyBenchmarks%20%3D%3E%20"), "__plus", [result])]);
  11. return self;}
  12. ]
  13. }),
  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.send(smalltalk.send(self, "__lt", [(2)]), "_ifTrue_ifFalse_", [(function(){return (1);}), (function(){return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "__minus", [(1)]), "_benchFib", []), "__plus", [smalltalk.send(smalltalk.send(self, "__minus", [(2)]), "_benchFib", [])]), "__plus", [(1)]);})]);
  22. return self;}
  23. ]
  24. }),
  25. smalltalk.Number);
  26. smalltalk.addMethod(
  27. '_benchmark',
  28. smalltalk.method({
  29. selector: 'benchmark',
  30. fn: function (){
  31. var self=this;
  32. var size=nil;
  33. var flags=nil;
  34. var prime=nil;
  35. var k=nil;
  36. var count=nil;
  37. size=(8190);
  38. smalltalk.send((1), "_to_do_", [self, (function(iter){count=(0);flags=smalltalk.send(smalltalk.Array, "_new", []);smalltalk.send(size, "_timesRepeat_", [(function(){return smalltalk.send(flags, "_add_", [true]);})]);return smalltalk.send((1), "_to_do_", [size, (function(i){return smalltalk.send(smalltalk.send(flags, "_at_", [i]), "_ifTrue_", [(function(){prime=smalltalk.send(i, "__plus", [(1)]);k=smalltalk.send(i, "__plus", [prime]);smalltalk.send((function(){return smalltalk.send(k, "__lt_eq", [size]);}), "_whileTrue_", [(function(){smalltalk.send(flags, "_at_put_", [k, false]);return k=smalltalk.send(k, "__plus", [prime]);})]);return count=smalltalk.send(count, "__plus", [(1)]);})]);})]);})]);
  39. return count;
  40. return self;}
  41. ]
  42. }),
  43. smalltalk.Number);
  44. smalltalk.addMethod(
  45. '_tinyBenchmarks',
  46. smalltalk.method({
  47. selector: 'tinyBenchmarks',
  48. fn: function (){
  49. var self=this;
  50. var t1=nil;
  51. var t2=nil;
  52. var r=nil;
  53. var n1=nil;
  54. var n2=nil;
  55. n1=(1);
  56. smalltalk.send((function(){t1=smalltalk.send(smalltalk.Date, "_millisecondsToRun_", [(function(){return smalltalk.send(n1, "_benchmark", []);})]);return smalltalk.send(t1, "__lt", [(1000)]);}), "_whileTrue_", [(function(){return n1=smalltalk.send(n1, "__star", [(2)]);})]);
  57. n2=(28);
  58. smalltalk.send((function(){t2=smalltalk.send(smalltalk.Date, "_millisecondsToRun_", [(function(){return r=smalltalk.send(n2, "_benchFib", []);})]);return smalltalk.send(t2, "__lt", [(1000)]);}), "_whileTrue_", [(function(){return n2=smalltalk.send(n2, "__plus", [(1)]);})]);
  59. return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(n1, "__star", [(500000)]), "__star", [(1000)]), "__slash", [t1]), "_printString", []), "__comma", [unescape("%20bytecodes/sec%3B%20")]), "__comma", [smalltalk.send(smalltalk.send(smalltalk.send(r, "__star", [(1000)]), "__slash", [t2]), "_printString", [])]), "__comma", [unescape("%20sends/sec")]);
  60. return self;}
  61. ]
  62. }),
  63. smalltalk.Number);
  64. smalltalk.addMethod(
  65. '_jsbenchFib',
  66. smalltalk.method({
  67. selector: 'jsbenchFib',
  68. fn: function (){
  69. var self=this;
  70. if (this < 2) {
  71. return 1;
  72. } else {
  73. return (this-1)._jsbenchFib() + (this-2)._jsbenchFib() + 1;};
  74. return self;}
  75. ]
  76. }),
  77. smalltalk.Number);
  78. smalltalk.addMethod(
  79. '_jsbenchmark',
  80. smalltalk.method({
  81. selector: 'jsbenchmark',
  82. fn: function (){
  83. var self=this;
  84. var size = 8190;
  85. var count;
  86. for (var z=0;z<this;z++) {
  87. count = 0;
  88. var flags = new Array();
  89. for (var p=0; p<size; p++) {
  90. flags[p] = true;
  91. }
  92. for (var i=1;i<=size;i++) {
  93. if (flags[i-1]) {
  94. var prime = i+1;
  95. var k = i + prime;
  96. while (k <= size) {
  97. flags[k-1] = false;
  98. k = k + prime;
  99. }
  100. count = count + 1;
  101. }
  102. }
  103. }
  104. return count;
  105. return self;}
  106. ]
  107. }),
  108. smalltalk.Number);
  109. smalltalk.addMethod(
  110. '_jstinyBenchmarks',
  111. smalltalk.method({
  112. selector: 'jstinyBenchmarks',
  113. fn: function (){
  114. var self=this;
  115. var t1=nil;
  116. var t2=nil;
  117. var r=nil;
  118. var n1=nil;
  119. var n2=nil;
  120. n1=(1);
  121. smalltalk.send((function(){t1=smalltalk.send(smalltalk.Date, "_millisecondsToRun_", [(function(){return smalltalk.send(n1, "_jsbenchmark", []);})]);return smalltalk.send(t1, "__lt", [(1000)]);}), "_whileTrue_", [(function(){return n1=smalltalk.send(n1, "__star", [(2)]);})]);
  122. n2=(28);
  123. smalltalk.send((function(){t2=smalltalk.send(smalltalk.Date, "_millisecondsToRun_", [(function(){return r=smalltalk.send(n2, "_jsbenchFib", []);})]);return smalltalk.send(t2, "__lt", [(1000)]);}), "_whileTrue_", [(function(){return n2=smalltalk.send(n2, "__plus", [(1)]);})]);
  124. return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(n1, "__star", [(500000)]), "__star", [(1000)]), "__slash", [t1]), "_printString", []), "__comma", [unescape("%20bytecodes/sec%3B%20")]), "__comma", [smalltalk.send(smalltalk.send(smalltalk.send(r, "__star", [(1000)]), "__slash", [t2]), "_printString", [])]), "__comma", [unescape("%20sends/sec")]);
  125. return self;}
  126. ]
  127. }),
  128. smalltalk.Number);