| 
					
				 | 
			
			
				@@ -6,7 +6,11 @@ Object subclass: #Benchfib 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 main 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console log: '0 tinyBenchmarks => ', 0 tinyBenchmarks 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	| result | 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	result := 0 tinyBenchmarks. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{'console.log(''0 tinyBenchmarks => '' + result);'}. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	result := 0 jstinyBenchmarks. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{'console.log(''0 jstinyBenchmarks => '' + result);'} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 !Number methodsFor: '*Benchfib'! 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -62,6 +66,58 @@ tinyBenchmarks 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"Note: #benchFib's runtime is about O(k^n), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		where k is the golden number = (1 + 5 sqrt) / 2 = 1.618...." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	^ ((n1 * 500000 * 1000) / t1) printString, ' bytecodes/sec; ', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  ((r * 1000) / t2) printString, ' sends/sec' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+jsbenchFib 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{'if (this < 2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return (this-1)._jsbenchFib() + (this-2)._jsbenchFib() + 1;}'} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+jsbenchmark 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var size = 8190; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var count; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+for (var z=0;z<this;z++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  count = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  var flags = new Array(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  for (var p=0; p<size; p++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    flags[p] = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  for (var i=1;i<=size;i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (flags[i-1]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      var prime = i+1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      var k = i + prime; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      while (k <= size) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        flags[k-1] = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        k = k + prime; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      count = count + 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return count'} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+jstinyBenchmarks 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	"0 jstinyBenchmarks" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	| t1 t2 r n1 n2 | 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	n1 := 1. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	[t1 := Date millisecondsToRun: [n1 jsbenchmark]. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	t1 < 1000] whileTrue:[n1 := n1 * 2]. "Note: #benchmark's runtime is about O(n)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	n2 := 28. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	[t2 := Date millisecondsToRun: [r := n2 jsbenchFib]. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	t2 < 1000] whileTrue:[n2 := n2 + 1].  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	"Note: #jsbenchFib's runtime is about O(k^n), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		where k is the golden number = (1 + 5 sqrt) / 2 = 1.618...." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	^ ((n1 * 500000 * 1000) / t1) printString, ' bytecodes/sec; ', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	  ((r * 1000) / t2) printString, ' sends/sec' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! ! 
			 |