Index: benchmark/bench.h
===================================================================
--- benchmark/bench.h	(revision 90cb6f7f9c0fbf0f5d38f8c7fb844920357f291f)
+++ benchmark/bench.h	(revision 846c026c176ce0693b7dc5e3cb2cc03da4e5ccaa)
@@ -5,5 +5,6 @@
 #endif
 	#include <stdlib.h>
-	#include <unistd.h>					// sysconf
+	#include <stdint.h>				// uint64_t
+	#include <unistd.h>				// sysconf
 #if ! defined(__cforall)
 	#include <time.h>
@@ -15,36 +16,29 @@
 
 
-static inline unsigned long long int bench_time() {
-    struct timespec ts;
-    clock_gettime(
-#if defined( __linux__ )
-	 CLOCK_THREAD_CPUTIME_ID,
-#elif defined( __freebsd__ )
-	 CLOCK_PROF,
-#elif defined( __solaris__ )
-	 CLOCK_HIGHRES,
-#else
-    #error uC++ : internal error, unsupported architecture
-#endif
-	 &ts );
-    return 1000000000LL * ts.tv_sec + ts.tv_nsec;
-} // Time
+static inline uint64_t bench_time() {
+	struct timespec ts;
+	clock_gettime( CLOCK_THREAD_CPUTIME_ID, &ts );
+	return 1000000000LL * ts.tv_sec + ts.tv_nsec;
+} // bench_time
 
 #ifndef BENCH_N
-#define BENCH_N 500 //10000000
+#define BENCH_N 10000000
 #endif
 
+size_t times = BENCH_N;
+
+#define BENCH_START()				\
+	if ( argc > 2 ) exit( EXIT_FAILURE );	\
+	if ( argc == 2 ) {			\
+		times = atoi( argv[1] );	\
+	}
+
 #define BENCH(statement, output)		\
-	size_t n = BENCH_N;			\
-	if( argc > 2 ) return 1;		\
-	if( argc == 2 ) {				\
-		n = atoi(argv[1]);		\
-	}						\
-	long long int StartTime, EndTime;	\
+	uint64_t StartTime, EndTime;		\
 	StartTime = bench_time();		\
-	statement;					\
+	statement;				\
 	EndTime = bench_time();			\
-	double output = 	\
-	    (double)( EndTime - StartTime ) / n;
+	double output = (double)( EndTime - StartTime ) / times;
+
 
 #if defined(__cforall)
@@ -53,2 +47,7 @@
 }
 #endif
+#if defined(__U_CPLUSPLUS__)
+unsigned int uDefaultPreemption() {
+	return 0;
+}
+#endif
