1
0
Преглед на файлове

Added newer Benchfib to node.

Göran Krampe преди 13 години
родител
ревизия
4a18a2b9bf
променени са 1 файла, в които са добавени 57 реда и са изтрити 1 реда
  1. 57 1
      nodejs/benchfib/Benchfib.st

+ 57 - 1
nodejs/benchfib/Benchfib.st

@@ -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'
 ! !