~ chicken-core (chicken-5) c5170b1676cb6faf83ae4263cadc4e028594d62d


commit c5170b1676cb6faf83ae4263cadc4e028594d62d
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Sun Nov 14 16:19:53 2010 +0100
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Sun Nov 14 16:19:53 2010 +0100

    added thread-list benchmark

diff --git a/distribution/manifest b/distribution/manifest
index c559cc66..f8437edf 100644
--- a/distribution/manifest
+++ b/distribution/manifest
@@ -95,6 +95,7 @@ srfi-4.scm
 stub.scm
 support.scm
 tcp.scm
+tests/thread-list.scm
 tests/test-optional.scm
 tests/arithmetic-test.scm
 tests/arithmetic-test.32.expected
diff --git a/tests/runbench.sh b/tests/runbench.sh
index 87be9d1a..c673e53c 100644
--- a/tests/runbench.sh
+++ b/tests/runbench.sh
@@ -62,3 +62,7 @@ run
 echo "======================================== fft/unboxed ... "
 $compile fft.scm -D unboxed
 run
+
+echo "======================================== threads ... "
+$compile thread-list.scm -O4 -d0 -fb
+run
diff --git a/tests/thread-list.scm b/tests/thread-list.scm
new file mode 100644
index 00000000..eabc0942
--- /dev/null
+++ b/tests/thread-list.scm
@@ -0,0 +1,44 @@
+;;;; thread-list.scm
+;
+; usage: csi -s thread-list.scm [COUNT]
+
+(use srfi-18)
+
+
+(define count #f)
+
+(define (run n)
+  (set! count n)
+  (print "creating " n " threads ...")
+  (let loop ((n n) (prev #f))
+    (cond ((negative? n)
+	   (print "starting ...")
+	   (thread-start! prev))
+	  (else
+	   (loop
+	    (sub1 n)
+	    (make-thread
+	     (lambda ()
+	       (thread-start! prev)
+	       (bump n))))))))
+
+(define (bump n)
+  (set! count (sub1 count))
+  (cond ((zero? count) 
+	 (newline)
+	 (exit))
+	((zero? (modulo n 1000))
+	 (print* "."))))
+
+(run (string->number (optional (command-line-arguments) "250000")))
+(thread-sleep! 604800)
+
+
+; time csi -s thread-list.scm 1000000 -:h1g -:d
+;   11 secs
+;
+; csc thread-list.scm -o a.out -v -O4 -f -d0
+; time a.out 1000000 -:h1g -:d
+;   4 secs
+;
+; (x86, Core2 Duo, 2.4Ghz, 2GB RAM)
Trap