Index: benchmark/ctxswitch/JavaThread.java
===================================================================
--- benchmark/ctxswitch/JavaThread.java	(revision be53b87bb8b688d529b9f3ca8a4a7bfd47305629)
+++ benchmark/ctxswitch/JavaThread.java	(revision 4eb07bc89b488e72e994bb07895f35c0be0aaa93)
@@ -26,8 +26,8 @@
 	static int x = 2;
 
-	static private final int NoOfTimes = Integer.parseInt("1000000") ;
+	static private int times = Integer.parseInt("100000");
 
 	public static void helper() {
-		for(int i = 1; i <= NoOfTimes; i += 1) {
+		for(int i = 1; i <= times; i += 1) {
 			Thread.yield();
 		}
@@ -37,10 +37,13 @@
 		helper();
 		long end = System.nanoTime();
-		System.out.println( (end - start) / NoOfTimes );
+		System.out.println( (end - start) / times );
 	}
 	public static void main(String[] args) throws InterruptedException {
-		for (int n = Integer.parseInt("5"); --n >= 0 ; ) { 
+		if ( args.length > 2 ) System.exit( 1 );
+		if ( args.length == 2 ) { times = Integer.parseInt(args[1]); }
+
+		for (int i = Integer.parseInt("5"); --i >= 0 ; ) {
 			InnerMain();
-			Thread.sleep(2000);     // 2 seconds
+			Thread.sleep(2000);	// 2 seconds
 			x = nextRandom(x);
 		}
@@ -48,2 +51,6 @@
 	}
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: benchmark/ctxswitch/cfa_cor.cfa
===================================================================
--- benchmark/ctxswitch/cfa_cor.cfa	(revision be53b87bb8b688d529b9f3ca8a4a7bfd47305629)
+++ benchmark/ctxswitch/cfa_cor.cfa	(revision 4eb07bc89b488e72e994bb07895f35c0be0aaa93)
@@ -5,25 +5,22 @@
 
 coroutine GreatSuspender {};
-
-void ?{}( GreatSuspender & this ) {
-	prime(this);
-}
-
 void main( __attribute__((unused)) GreatSuspender & this ) {
-	while( true ) {
+	while ( true ) {
 		suspend();
 	}
 }
-
-int main(int argc, char* argv[]) {
+int main( int argc, char * argv[] ) {
+	BENCH_START()
 	GreatSuspender s;
-
 	BENCH(
-		for ( i; n ) {
+		for ( i; times ) {
 			resume( s );
 		},
 		result
 	)
+	printf( "%g\n", result );
+}
 
-	printf("%g\n", result);
-}
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: benchmark/ctxswitch/cfa_cor_then.cfa
===================================================================
--- benchmark/ctxswitch/cfa_cor_then.cfa	(revision be53b87bb8b688d529b9f3ca8a4a7bfd47305629)
+++ benchmark/ctxswitch/cfa_cor_then.cfa	(revision 4eb07bc89b488e72e994bb07895f35c0be0aaa93)
@@ -18,14 +18,17 @@
 }
 
-int main(int argc, char* argv[]) {
+int main( int argc, char * argv[] ) {
+	BENCH_START()
 	GreatSuspender s;
-
 	BENCH(
-		for ( i; n ) {
+		for ( i; times ) {
 			resume( s );
 		},
 		result
 	)
+	printf( "%g\n", result );
+}
 
-	printf("%g\n", result);
-}
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: benchmark/ctxswitch/cfa_gen.cfa
===================================================================
--- benchmark/ctxswitch/cfa_gen.cfa	(revision be53b87bb8b688d529b9f3ca8a4a7bfd47305629)
+++ benchmark/ctxswitch/cfa_gen.cfa	(revision 4eb07bc89b488e72e994bb07895f35c0be0aaa93)
@@ -6,22 +6,25 @@
 
 void comain( GreatSuspender * this ) {
-    if ( __builtin_expect(this->next != 0, 1) ) goto *(this->next);
-    this->next = &&s1;
+	if ( __builtin_expect(this->next != 0, 1) ) goto *(this->next);
+	this->next = &&s1;
 	for () {
-	    return;
+		return;
 	  s1: ;
 	}
 }
 
-int main(int argc, char* argv[]) {
-    GreatSuspender s = { 0 };
-
+int main( int argc, char * argv[] ) {
+	BENCH_START()
+	GreatSuspender s = { 0 };
 	BENCH(
-		for ( i; n ) {
+		for ( i; times ) {
 			comain( &s );
 		},
 		result
 	)
+	printf( "%g\n", result );
+}
 
-	printf("%g\n", result);
-}
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: benchmark/ctxswitch/cfa_thrd.cfa
===================================================================
--- benchmark/ctxswitch/cfa_thrd.cfa	(revision be53b87bb8b688d529b9f3ca8a4a7bfd47305629)
+++ benchmark/ctxswitch/cfa_thrd.cfa	(revision 4eb07bc89b488e72e994bb07895f35c0be0aaa93)
@@ -3,12 +3,16 @@
 #include "bench.h"
 
-int main(int argc, char* argv[]) {
+int main( int argc, char * argv[] ) {
+	BENCH_START()
 	BENCH(
-		for ( i; n ) {
+		for ( i; times ) {
 			yield();
 		},
 		result
 	)
+	printf( "%g\n", result );
+}
 
-	printf("%g\n", result);
-}
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: benchmark/ctxswitch/cfa_thrd2.cfa
===================================================================
--- benchmark/ctxswitch/cfa_thrd2.cfa	(revision be53b87bb8b688d529b9f3ca8a4a7bfd47305629)
+++ benchmark/ctxswitch/cfa_thrd2.cfa	(revision 4eb07bc89b488e72e994bb07895f35c0be0aaa93)
@@ -13,15 +13,18 @@
 }
 
-int main(int argc, char* argv[]) {
+int main( int argc, char * argv[] ) {
+	BENCH_START()
 	Fibre f1;
   	BENCH(
-		for ( i; n ) {
+		for ( i; times ) {
 			yield();
 		},
 		result
 	)
+	printf( "%g\n", result );
+	done = true;
+}
 
-	printf("%g\n", result);
-	done = true;
-	return 0;
-}
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: benchmark/ctxswitch/goroutine.go
===================================================================
--- benchmark/ctxswitch/goroutine.go	(revision be53b87bb8b688d529b9f3ca8a4a7bfd47305629)
+++ benchmark/ctxswitch/goroutine.go	(revision 4eb07bc89b488e72e994bb07895f35c0be0aaa93)
@@ -3,6 +3,7 @@
 import (
     "fmt"
+    "time"
+    "flag"
     "runtime"
-    "time"
 )
 
@@ -28,6 +29,10 @@
 
 func main() {
-	const NoOfTimes = 10000000
-	go ContextSwitch( NoOfTimes )		// context switch
+	times := flag.Int( "times", 10000000, "loop iterations" )
+	go ContextSwitch( *times )		// context switch
 	<- shake
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: benchmark/ctxswitch/kos_fibre.cpp
===================================================================
--- benchmark/ctxswitch/kos_fibre.cpp	(revision be53b87bb8b688d529b9f3ca8a4a7bfd47305629)
+++ benchmark/ctxswitch/kos_fibre.cpp	(revision 4eb07bc89b488e72e994bb07895f35c0be0aaa93)
@@ -3,12 +3,16 @@
 #include "bench.h"
 
-int main(int argc, char* argv[]) {
+int main( int argc, char * argv[] ) {
+	BENCH_START()
 	BENCH(
-		for (size_t i = 0; i < n; i++) {
+		for (size_t i = 0; i < times; i++) {
 			Fibre::yield();
 		},
 		result
 	)
-	printf("%g\n", result);
-	return 0;
+	printf( "%g\n", result );
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: benchmark/ctxswitch/kos_fibre2.cpp
===================================================================
--- benchmark/ctxswitch/kos_fibre2.cpp	(revision be53b87bb8b688d529b9f3ca8a4a7bfd47305629)
+++ benchmark/ctxswitch/kos_fibre2.cpp	(revision 4eb07bc89b488e72e994bb07895f35c0be0aaa93)
@@ -11,16 +11,20 @@
 }
 
-int main(int argc, char* argv[]) {
+int main( int argc, char * argv[] ) {
+	BENCH_START()
 	Fibre* f1 = (new Fibre)->run(f1main);
   	BENCH(
-		for (size_t i = 0; i < n; i++) {
+		for (size_t i = 0; i < times; i++) {
 			Fibre::yield();
 		},
 		result
 	)
-	printf("%g\n", result);
+	printf( "%g\n", result );
 	done = true;
 	Fibre::yield();
 	f1->join();
-	return 0;
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: benchmark/ctxswitch/node_cor.js
===================================================================
--- benchmark/ctxswitch/node_cor.js	(revision 4eb07bc89b488e72e994bb07895f35c0be0aaa93)
+++ benchmark/ctxswitch/node_cor.js	(revision 4eb07bc89b488e72e994bb07895f35c0be0aaa93)
@@ -0,0 +1,24 @@
+var times = 50000000
+var argc = process.argv.length // node, path
+if ( argc > 3 ) process.exit( 1 )
+if ( argc == 3 ) times = Number( process.argv[2] )
+
+function * coroutine() {
+	while ( true ) {
+		yield
+	}
+}
+cor = coroutine()
+
+var hrstart = process.hrtime()
+for ( var i = 0; i < times; i += 1 ) {
+	cor.next();
+}
+hrend = process.hrtime( hrstart )
+var dur = (1000000000 * hrend[0] + hrend[1]) / times
+console.log( dur )
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "node node_cor.js" //
+// End: //
Index: benchmark/ctxswitch/pthreads.c
===================================================================
--- benchmark/ctxswitch/pthreads.c	(revision be53b87bb8b688d529b9f3ca8a4a7bfd47305629)
+++ benchmark/ctxswitch/pthreads.c	(revision 4eb07bc89b488e72e994bb07895f35c0be0aaa93)
@@ -6,12 +6,12 @@
 #include "bench.h"
 
-int main(int argc, char* argv[]) {
+int main( int argc, char * argv[] ) {
+	BENCH_START()
 	BENCH(
-		for (size_t i = 0; i < n; i++) {
+		for (size_t i = 0; i < times; i++) {
 			sched_yield();
 		},
 		result
 	)
-
-	printf("%g\n", result);
+	printf( "%g\n", result );
 }
Index: benchmark/ctxswitch/python_cor.py
===================================================================
--- benchmark/ctxswitch/python_cor.py	(revision 4eb07bc89b488e72e994bb07895f35c0be0aaa93)
+++ benchmark/ctxswitch/python_cor.py	(revision 4eb07bc89b488e72e994bb07895f35c0be0aaa93)
@@ -0,0 +1,26 @@
+import sys
+import time
+
+times = 50000000
+argc = len( sys.argv )
+if argc > 2:
+	sys.exit( 1 )
+if argc == 2:
+	times = int( sys.argv[1] )
+
+def GreatSuspender():
+	while True:
+		yield
+
+s = GreatSuspender()
+
+start = time.time_ns()
+for i in range( 10000000 ):
+	next( s )  # resume
+end = time.time_ns()
+print( (end - start) / times )
+
+# Local Variables: #
+# tab-width: 4 #
+# compile-command: "python3.7 python_cor.py" #
+# End: #
Index: benchmark/ctxswitch/rust_thrd.rs
===================================================================
--- benchmark/ctxswitch/rust_thrd.rs	(revision 4eb07bc89b488e72e994bb07895f35c0be0aaa93)
+++ benchmark/ctxswitch/rust_thrd.rs	(revision 4eb07bc89b488e72e994bb07895f35c0be0aaa93)
@@ -0,0 +1,27 @@
+use std::env;
+use std::process;
+use std::thread;
+use std::time::Instant;
+
+fn main() {
+	let mut times : u32 = 50000000;
+	let args: Vec<String> = env::args().collect();
+	if args.len() > 2 { process::exit( 1 ); }
+	if args.len() == 2 { times = args[1].parse().unwrap(); }
+
+	let start = Instant::now();
+	let th = thread::spawn( move || {
+		for _ in 1..times {
+			thread::yield_now();
+		}
+	});
+	th.join().unwrap();
+	let duration = start.elapsed() / times;
+	println!( "{:?}", duration.as_nanos() )
+}
+
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "rustc -C opt-level=3 rust_thrd.rs" //
+// End: //
Index: benchmark/ctxswitch/upp_cor.cc
===================================================================
--- benchmark/ctxswitch/upp_cor.cc	(revision be53b87bb8b688d529b9f3ca8a4a7bfd47305629)
+++ benchmark/ctxswitch/upp_cor.cc	(revision 4eb07bc89b488e72e994bb07895f35c0be0aaa93)
@@ -4,13 +4,4 @@
 
 _Coroutine GreatSuspender {
-public:
-	GreatSuspender() {
-		resume();
-	}
-
-	void do_resume() {
-		resume();
-	}
-private:
 	void main() {
 		while( true ) {
@@ -18,16 +9,22 @@
 		}
 	}
+  public:
+	void do_resume() {
+		resume();
+	}
 };
-
-int main(int argc, char* argv[]) {
+int main( int argc, char * argv[] ) {
+	BENCH_START()
 	GreatSuspender s;
-
 	BENCH(
-		for (size_t i = 0; i < n; i++) {
+		for (size_t i = 0; i < times; i++) {
 			s.do_resume();
 		},
 		result
 	)
+	printf( "%g\n", result );
+}
 
-	printf("%g\n", result);
-}
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: benchmark/ctxswitch/upp_thrd.cc
===================================================================
--- benchmark/ctxswitch/upp_thrd.cc	(revision be53b87bb8b688d529b9f3ca8a4a7bfd47305629)
+++ benchmark/ctxswitch/upp_thrd.cc	(revision 4eb07bc89b488e72e994bb07895f35c0be0aaa93)
@@ -3,12 +3,16 @@
 #include "bench.h"
 
-int main(int argc, char* argv[]) {
+int main( int argc, char * argv[] ) {
+	BENCH_START()
 	BENCH(
-		for (size_t i = 0; i < n; i++) {
+		for (size_t i = 0; i < times; i++) {
 			uThisTask().yield();
 		},
 		result
 	)
+	printf( "%g\n", result );
+}
 
-	printf("%g\n", result);
-}
+// Local Variables: //
+// tab-width: 4 //
+// End: //
