safe fx ops benchmark pasted by megane on Mon Aug 19 15:51:45 2019
diff --git a/c-platform.scm b/c-platform.scm
index bf034ff1..98d9440f 100644
--- a/c-platform.scm
+++ b/c-platform.scm
@@ -990,15 +990,27 @@
'("C_i_setslot") ) )
callargs) ) ) ) ) )
-(rewrite 'chicken.fixnum#fx+ 17 2 "C_fixnum_plus" "C_u_fixnum_plus")
-(rewrite 'chicken.fixnum#fx- 17 2 "C_fixnum_difference" "C_u_fixnum_difference")
-(rewrite 'chicken.fixnum#fxshl 17 2 "C_fixnum_shift_left")
-(rewrite 'chicken.fixnum#fxshr 17 2 "C_fixnum_shift_right")
-(rewrite 'chicken.fixnum#fxneg 17 1 "C_fixnum_negate" "C_u_fixnum_negate")
-(rewrite 'chicken.fixnum#fxxor 17 2 "C_fixnum_xor" "C_fixnum_xor")
-(rewrite 'chicken.fixnum#fxand 17 2 "C_fixnum_and" "C_u_fixnum_and")
-(rewrite 'chicken.fixnum#fxior 17 2 "C_fixnum_or" "C_u_fixnum_or")
-(rewrite 'chicken.fixnum#fx/ 17 2 "C_fixnum_divide" "C_u_fixnum_divide")
+(rewrite 'chicken.fixnum#fx= 17 2 "C_i_s_fixnum_equalp" "C_eqp")
+(rewrite 'chicken.fixnum#fx+ 17 2 "C_i_s_fixnum_plus" "C_u_fixnum_plus")
+(rewrite 'chicken.fixnum#fx- 17 2 "C_i_s_fixnum_difference" "C_u_fixnum_difference")
+(rewrite 'chicken.fixnum#fx* 17 2 "C_i_s_fixnum_times" "C_fixnum_times")
+(rewrite 'chicken.fixnum#fx/ 17 2 "C_i_s_fixnum_divide" "C_u_fixnum_divide")
+(rewrite 'chicken.fixnum#fxand 17 2 "C_i_s_fixnum_and" "C_u_fixnum_and")
+(rewrite 'chicken.fixnum#fxior 17 2 "C_i_s_fixnum_or" "C_u_fixnum_or")
+(rewrite 'chicken.fixnum#fxxor 17 2 "C_i_s_fixnum_xor" "C_fixnum_xor")
+(rewrite 'chicken.fixnum#fxnot 17 1 "C_i_s_fixnum_not" "C_fixnum_not")
+(rewrite 'chicken.fixnum#fxshr 17 2 "C_i_s_fixnum_shift_right" "C_fixnum_shift_right")
+(rewrite 'chicken.fixnum#fxshl 17 2 "C_i_s_fixnum_shift_left" "C_fixnum_shift_left")
+(rewrite 'chicken.fixnum#fxmax 17 2 "C_i_s_fixnum_max" "C_i_fixnum_max")
+(rewrite 'chicken.fixnum#fxmin 17 2 "C_i_s_fixnum_min" "C_i_fixnum_min")
+(rewrite 'chicken.fixnum#fxmod 17 2 "C_i_s_fixnum_modulo" "C_u_fixnum_modulo")
+(rewrite 'chicken.fixnum#fxneg 17 1 "C_i_s_fixnum_negate" "C_u_fixnum_negate")
+(rewrite 'chicken.fixnum#fxodd? 17 1 "C_i_s_fixnum_oddp" "C_i_fixnumoddp")
+(rewrite 'chicken.fixnum#fxeven? 17 1 "C_i_s_fixnum_evenp" "C_i_fixnumevenp")
+(rewrite 'chicken.fixnum#fx< 17 2 "C_i_s_fixnum_lessp" "C_fixnum_lessp")
+(rewrite 'chicken.fixnum#fx> 17 2 "C_i_s_fixnum_greaterp" "C_fixnum_greaterp")
+(rewrite 'chicken.fixnum#fx<= 17 2 "C_i_s_fixnum_less_or_equal_p" "C_fixnum_less_or_equal_p")
+(rewrite 'chicken.fixnum#fx>= 17 2 "C_i_s_fixnum_greater_or_equal_p" "C_fixnum_greater_or_equal_p")
(rewrite 'chicken.fixnum#fxmod 17 2 "C_fixnum_modulo" "C_u_fixnum_modulo")
(rewrite 'chicken.fixnum#fxrem 17 2 "C_i_fixnum_remainder_checked")
diff --git a/chicken.h b/chicken.h
index 72d5d397..d19a0378 100644
--- a/chicken.h
+++ b/chicken.h
@@ -2003,6 +2003,7 @@ C_fctexport C_word C_fcall C_i_length(C_word lst) C_regparm;
C_fctexport C_word C_fcall C_u_i_length(C_word lst) C_regparm;
C_fctexport C_word C_fcall C_i_check_closure_2(C_word x, C_word loc) C_regparm;
C_fctexport C_word C_fcall C_i_check_fixnum_2(C_word x, C_word loc) C_regparm;
+C_fctexport C_word C_fcall C_i_check_fixnum_2_c(C_word x, char *loc) C_regparm;
C_fctexport C_word C_fcall C_i_check_exact_2(C_word x, C_word loc) C_regparm; /* DEPRECATED */
C_fctexport C_word C_fcall C_i_check_inexact_2(C_word x, C_word loc) C_regparm;
C_fctexport C_word C_fcall C_i_check_number_2(C_word x, C_word loc) C_regparm;
@@ -2913,6 +2914,152 @@ inline static C_word C_fixnum_modulo(C_word x, C_word y)
}
}
+inline static C_word C_i_s_fixnum_equalp(C_word n1, C_word n2)
+{
+ C_i_check_fixnum_2_c(n1, C_text("fx="));
+ C_i_check_fixnum_2_c(n2, C_text("fx="));
+ return C_eqp(n1, n2);
+}
+
+inline static C_word C_i_s_fixnum_plus(C_word n1, C_word n2)
+{
+ C_i_check_fixnum_2_c(n1, C_text("fx+"));
+ C_i_check_fixnum_2_c(n2, C_text("fx+"));
+ return C_u_fixnum_plus(n1, n2);
+}
+
+inline static C_word C_i_s_fixnum_difference(C_word n1, C_word n2)
+{
+ C_i_check_fixnum_2_c(n1, C_text("fx-"));
+ C_i_check_fixnum_2_c(n2, C_text("fx-"));
+ return C_u_fixnum_difference(n1, n2);
+}
+
+inline static C_word C_i_s_fixnum_times(C_word n1, C_word n2)
+{
+ C_i_check_fixnum_2_c(n1, C_text("fx*"));
+ C_i_check_fixnum_2_c(n2, C_text("fx*"));
+ return C_fixnum_times(n1, n2);
+}
+
+inline static C_word C_i_s_fixnum_divide(C_word n1, C_word n2)
+{
+ C_i_check_fixnum_2_c(n1, C_text("fx/"));
+ C_i_check_fixnum_2_c(n2, C_text("fx/"));
+ if(n2 == C_fix(0)) C_div_by_zero_error(C_text("fx/"));
+ return C_u_fixnum_divide(n1, n2);
+}
+
+inline static C_word C_i_s_fixnum_and(C_word n1, C_word n2)
+{
+ C_i_check_fixnum_2_c(n1, C_text("fxand"));
+ C_i_check_fixnum_2_c(n2, C_text("fxand"));
+ return C_u_fixnum_and(n1, n2);
+}
+
+inline static C_word C_i_s_fixnum_or(C_word n1, C_word n2)
+{
+ C_i_check_fixnum_2_c(n1, C_text("fxior"));
+ C_i_check_fixnum_2_c(n2, C_text("fxior"));
+ return C_u_fixnum_or(n1, n2);
+}
+
+inline static C_word C_i_s_fixnum_xor(C_word n1, C_word n2)
+{
+ C_i_check_fixnum_2_c(n1, C_text("fxxor"));
+ C_i_check_fixnum_2_c(n2, C_text("fxxor"));
+ return C_fixnum_xor(n1, n2);
+}
+
+inline static C_word C_i_s_fixnum_not(C_word n1)
+{
+ C_i_check_fixnum_2_c(n1, C_text("fxnot"));
+ return C_fixnum_not(n1);
+}
+
+inline static C_word C_i_s_fixnum_shift_right(C_word n1, C_word n2)
+{
+ C_i_check_fixnum_2_c(n1, C_text("fxshr"));
+ C_i_check_fixnum_2_c(n2, C_text("fxshr"));
+ return C_fixnum_shift_right(n1, n2);
+}
+
+inline static C_word C_i_s_fixnum_shift_left(C_word n1, C_word n2)
+{
+ C_i_check_fixnum_2_c(n1, C_text("fxshl"));
+ C_i_check_fixnum_2_c(n2, C_text("fxshl"));
+ return C_fixnum_shift_left(n1, n2);
+}
+
+inline static C_word C_i_s_fixnum_max(C_word n1, C_word n2)
+{
+ C_i_check_fixnum_2_c(n1, C_text("fxmax"));
+ C_i_check_fixnum_2_c(n2, C_text("fxmax"));
+ return C_i_fixnum_max(n1, n2);
+}
+
+inline static C_word C_i_s_fixnum_min(C_word n1, C_word n2)
+{
+ C_i_check_fixnum_2_c(n1, C_text("fxmin"));
+ C_i_check_fixnum_2_c(n2, C_text("fxmin"));
+ return C_i_fixnum_min(n1, n2);
+}
+
+inline static C_word C_i_s_fixnum_modulo(C_word n1, C_word n2)
+{
+ C_i_check_fixnum_2_c(n1, C_text("fxmod"));
+ C_i_check_fixnum_2_c(n2, C_text("fxmod"));
+ if(n2 == C_fix(0)) C_div_by_zero_error(C_text("fxmod"));
+ return C_u_fixnum_modulo(n1, n2);
+}
+
+inline static C_word C_i_s_fixnum_negate(C_word n1)
+{
+ C_i_check_fixnum_2_c(n1, C_text("fxneg"));
+ return C_u_fixnum_negate(n1);
+}
+
+inline static C_word C_i_s_fixnum_oddp(C_word n1)
+{
+ C_i_check_fixnum_2_c(n1, C_text("fxodd?"));
+ return C_i_fixnumoddp(n1);
+}
+
+inline static C_word C_i_s_fixnum_evenp(C_word n1)
+{
+ C_i_check_fixnum_2_c(n1, C_text("fxeven?"));
+ return C_i_fixnumevenp(n1);
+}
+
+inline static C_word C_i_s_fixnum_lessp(C_word n1, C_word n2)
+{
+ C_i_check_fixnum_2_c(n1, C_text("fx<"));
+ C_i_check_fixnum_2_c(n2, C_text("fx<"));
+ return C_fixnum_lessp(n1, n2);
+}
+
+inline static C_word C_i_s_fixnum_greaterp(C_word n1, C_word n2)
+{
+ C_i_check_fixnum_2_c(n1, C_text("fx>"));
+ C_i_check_fixnum_2_c(n2, C_text("fx>"));
+ return C_fixnum_greaterp(n1, n2);
+}
+
+inline static C_word C_i_s_fixnum_less_or_equal_p(C_word n1, C_word n2)
+{
+ C_i_check_fixnum_2_c(n1, C_text("fx<="));
+ C_i_check_fixnum_2_c(n2, C_text("fx<="));
+ return C_fixnum_less_or_equal_p(n1, n2);
+}
+
+inline static C_word C_i_s_fixnum_greater_or_equal_p(C_word n1, C_word n2)
+{
+ C_i_check_fixnum_2_c(n1, C_text("fx>="));
+ C_i_check_fixnum_2_c(n2, C_text("fx>="));
+ return C_fixnum_greater_or_equal_p(n1, n2);
+}
+
+
/* XXX: Naming convention is inconsistent! There's C_fixnum_divide()
* but also C_a_i_flonum_quotient_checked()
*/
diff --git a/library.scm b/library.scm
index bc0ef42c..2a301ab7 100644
--- a/library.scm
+++ b/library.scm
@@ -969,29 +969,29 @@ EOF
(define fixnum-bits (foreign-value "(C_WORD_SIZE - 1)" int))
(define fixnum-precision (foreign-value "(C_WORD_SIZE - (1 + 1))" int))
-(define (fx+ x y) (##core#inline "C_fixnum_plus" x y))
-(define (fx- x y) (##core#inline "C_fixnum_difference" x y))
-(define (fx* x y) (##core#inline "C_fixnum_times" x y))
-(define (fx= x y) (eq? x y))
-(define (fx> x y) (##core#inline "C_fixnum_greaterp" x y))
-(define (fx< x y) (##core#inline "C_fixnum_lessp" x y))
-(define (fx>= x y) (##core#inline "C_fixnum_greater_or_equal_p" x y))
-(define (fx<= x y) (##core#inline "C_fixnum_less_or_equal_p" x y))
-(define (fxmin x y) (##core#inline "C_i_fixnum_min" x y))
-(define (fxmax x y) (##core#inline "C_i_fixnum_max" x y))
-(define (fxneg x) (##core#inline "C_fixnum_negate" x))
-(define (fxand x y) (##core#inline "C_fixnum_and" x y))
-(define (fxior x y) (##core#inline "C_fixnum_or" x y))
-(define (fxxor x y) (##core#inline "C_fixnum_xor" x y))
-(define (fxnot x) (##core#inline "C_fixnum_not" x))
-(define (fxshl x y) (##core#inline "C_fixnum_shift_left" x y))
-(define (fxshr x y) (##core#inline "C_fixnum_shift_right" x y))
-(define (fxodd? x) (##core#inline "C_i_fixnumoddp" x))
-(define (fxeven? x) (##core#inline "C_i_fixnumevenp" x))
+(define (fx= x y) (##core#inline C_i_s_fixnum_equalp x y))
+(define (fx+ x y) (##core#inline C_i_s_fixnum_plus x y))
+(define (fx- x y) (##core#inline C_i_s_fixnum_difference x y))
+(define (fx* x y) (##core#inline C_i_s_fixnum_times x y))
+(define (fx/ x y) (##core#inline C_i_s_fixnum_divide x y))
+(define (fxand x y) (##core#inline C_i_s_fixnum_and x y))
+(define (fxior x y) (##core#inline C_i_s_fixnum_or x y))
+(define (fxxor x y) (##core#inline C_i_s_fixnum_xor x y))
+(define (fxnot x) (##core#inline C_i_s_fixnum_not x))
+(define (fxshr x y) (##core#inline C_i_s_fixnum_shift_right x y))
+(define (fxshl x y) (##core#inline C_i_s_fixnum_shift_left x y))
+(define (fxmax x y) (##core#inline C_i_s_fixnum_max x y))
+(define (fxmin x y) (##core#inline C_i_s_fixnum_min x y))
+(define (fxmod x y) (##core#inline C_i_s_fixnum_modulo x y))
+(define (fxneg x) (##core#inline C_i_s_fixnum_negate x))
+(define (fxodd? x) (##core#inline C_i_s_fixnum_oddp x))
+(define (fxeven? x) (##core#inline C_i_s_fixnum_evenp x))
+(define (fx< x y) (##core#inline C_i_s_fixnum_lessp x y))
+(define (fx> x y) (##core#inline C_i_s_fixnum_greaterp x y))
+(define (fx<= x y) (##core#inline C_i_s_fixnum_less_or_equal_p x y))
+(define (fx>= x y) (##core#inline C_i_s_fixnum_greater_or_equal_p x y))
(define (fxlen x) (##core#inline "C_i_fixnum_length" x))
-(define (fx/ x y) (##core#inline "C_fixnum_divide" x y) )
(define (fxgcd x y) (##core#inline "C_i_fixnum_gcd" x y))
-(define (fxmod x y) (##core#inline "C_fixnum_modulo" x y) )
(define (fxrem x y) (##core#inline "C_i_fixnum_remainder_checked" x y) )
;; Overflow-detecting versions of some of the above
diff --git a/runtime.c b/runtime.c
index 5e1bb9f1..a96c1232 100644
--- a/runtime.c
+++ b/runtime.c
@@ -7292,6 +7292,14 @@ C_regparm C_word C_fcall C_i_check_fixnum_2(C_word x, C_word loc)
return C_SCHEME_UNDEFINED;
}
+C_regparm C_word C_fcall C_i_check_fixnum_2_c(C_word x, char *loc)
+{
+ if(C_unlikely(!(x & C_FIXNUM_BIT))) {
+ error_location = loc;
+ barf(C_BAD_ARGUMENT_TYPE_NO_FIXNUM_ERROR, NULL, x);
+ }
+}
+
/* DEPRECATED */
C_regparm C_word C_fcall C_i_check_exact_2(C_word x, C_word loc)
{
diff --git a/types.db b/types.db
index 06514b28..ad0ef145 100644
--- a/types.db
+++ b/types.db
@@ -1270,29 +1270,72 @@
(chicken.fixnum#fixnum-precision fixnum)
;;XXX These aren't enforcing, and aren't foldable due to 32/64-bit issues
-(chicken.fixnum#fx- (#(procedure #:clean) chicken.fixnum#fx- (fixnum fixnum) fixnum))
-(chicken.fixnum#fx* (#(procedure #:clean) chicken.fixnum#fx* (fixnum fixnum) fixnum))
-(chicken.fixnum#fx/ (#(procedure #:clean) chicken.fixnum#fx/ (fixnum fixnum) fixnum))
+(chicken.fixnum#fx=
+ (#(procedure #:pure #:enforce) chicken.fixnum#fx= (fixnum fixnum) boolean)
+ ((fixnum fixnum) (##core#inline "C_eqp" #(1) #(2))))
+(chicken.fixnum#fx+
+ (#(procedure #:pure #:enforce) chicken.fixnum#fx+ (fixnum fixnum) fixnum)
+ ((fixnum fixnum) (##core#inline "C_u_fixnum_plus" #(1) #(2))))
+(chicken.fixnum#fx-
+ (#(procedure #:pure #:enforce) chicken.fixnum#fx- (fixnum fixnum) fixnum)
+ ((fixnum fixnum) (##core#inline "C_u_fixnum_difference" #(1) #(2))))
+(chicken.fixnum#fx*
+ (#(procedure #:pure #:enforce) chicken.fixnum#fx* (fixnum fixnum) fixnum)
+ ((fixnum fixnum) (##core#inline "C_fixnum_times" #(1) #(2))))
+(chicken.fixnum#fx/
+ (#(procedure #:pure #:enforce) chicken.fixnum#fx/ (fixnum fixnum) fixnum)
+ ((fixnum fixnum) (##core#inline "C_u_fixnum_divide" #(1) #(2))))
+(chicken.fixnum#fxand
+ (#(procedure #:pure #:enforce) chicken.fixnum#fxand (fixnum fixnum) fixnum)
+ ((fixnum fixnum) (##core#inline "C_u_fixnum_and" #(1) #(2))))
+(chicken.fixnum#fxior
+ (#(procedure #:pure #:enforce) chicken.fixnum#fxior (fixnum fixnum) fixnum)
+ ((fixnum fixnum) (##core#inline "C_u_fixnum_or" #(1) #(2))))
+(chicken.fixnum#fxxor
+ (#(procedure #:pure #:enforce) chicken.fixnum#fxxor (fixnum fixnum) fixnum)
+ ((fixnum fixnum) (##core#inline "C_fixnum_xor" #(1) #(2))))
+(chicken.fixnum#fxnot
+ (#(procedure #:pure #:enforce) chicken.fixnum#fxnot (fixnum) fixnum)
+ ((fixnum) (##core#inline "C_fixnum_not" #(1))))
+(chicken.fixnum#fxshr
+ (#(procedure #:pure #:enforce) chicken.fixnum#fxshr (fixnum fixnum) fixnum)
+ ((fixnum fixnum) (##core#inline "C_fixnum_shift_right" #(1) #(2))))
+(chicken.fixnum#fxshl
+ (#(procedure #:pure #:enforce) chicken.fixnum#fxshl (fixnum fixnum) fixnum)
+ ((fixnum fixnum) (##core#inline "C_fixnum_shift_left" #(1) #(2))))
+(chicken.fixnum#fxmax
+ (#(procedure #:pure #:enforce) chicken.fixnum#fxmax (fixnum fixnum) fixnum)
+ ((fixnum fixnum) (##core#inline "C_i_fixnum_max" #(1) #(2))))
+(chicken.fixnum#fxmin
+ (#(procedure #:pure #:enforce) chicken.fixnum#fxmin (fixnum fixnum) fixnum)
+ ((fixnum fixnum) (##core#inline "C_i_fixnum_min" #(1) #(2))))
+(chicken.fixnum#fxmod
+ (#(procedure #:pure #:enforce) chicken.fixnum#fxmod (fixnum fixnum) fixnum)
+ ((fixnum fixnum) (##core#inline "C_u_fixnum_modulo" #(1) #(2))))
+(chicken.fixnum#fxneg
+ (#(procedure #:pure #:enforce) chicken.fixnum#fxneg (fixnum) fixnum)
+ ((fixnum) (##core#inline "C_u_fixnum_negate" #(1))))
+(chicken.fixnum#fxodd?
+ (#(procedure #:pure #:enforce) chicken.fixnum#fxodd? (fixnum) boolean)
+ ((fixnum) (##core#inline "C_i_fixnumoddp" #(1))))
+(chicken.fixnum#fxeven?
+ (#(procedure #:pure #:enforce) chicken.fixnum#fxeven? (fixnum) boolean)
+ ((fixnum) (##core#inline "C_i_fixnumevenp" #(1))))
+(chicken.fixnum#fx<
+ (#(procedure #:pure #:enforce) chicken.fixnum#fx< (fixnum fixnum) boolean)
+ ((fixnum fixnum) (##core#inline "C_fixnum_lessp" #(1) #(2))))
+(chicken.fixnum#fx>
+ (#(procedure #:pure #:enforce) chicken.fixnum#fx> (fixnum fixnum) boolean)
+ ((fixnum fixnum) (##core#inline "C_fixnum_greaterp" #(1) #(2))))
+(chicken.fixnum#fx<=
+ (#(procedure #:pure #:enforce) chicken.fixnum#fx<= (fixnum fixnum) boolean)
+ ((fixnum fixnum) (##core#inline "C_fixnum_less_or_equal_p" #(1) #(2))))
+(chicken.fixnum#fx>=
+ (#(procedure #:pure #:enforce) chicken.fixnum#fx>= (fixnum fixnum) boolean)
+ ((fixnum fixnum) (##core#inline "C_fixnum_greater_or_equal_p" #(1) #(2))))
+
(chicken.fixnum#fxgcd (#(procedure #:clean) chicken.fixnum#fxgcd (fixnum fixnum) fixnum))
-(chicken.fixnum#fx+ (#(procedure #:clean) chicken.fixnum#fx+ (fixnum fixnum) fixnum))
-(chicken.fixnum#fx< (#(procedure #:clean) chicken.fixnum#fx< (fixnum fixnum) boolean))
-(chicken.fixnum#fx<= (#(procedure #:clean) chicken.fixnum#fx<= (fixnum fixnum) boolean))
-(chicken.fixnum#fx= (#(procedure #:clean) chicken.fixnum#fx= (fixnum fixnum) boolean))
-(chicken.fixnum#fx> (#(procedure #:clean) chicken.fixnum#fx> (fixnum fixnum) boolean))
-(chicken.fixnum#fx>= (#(procedure #:clean) chicken.fixnum#fx>= (fixnum fixnum) boolean))
-(chicken.fixnum#fxand (#(procedure #:clean) chicken.fixnum#fxand (fixnum fixnum) fixnum))
-(chicken.fixnum#fxeven? (#(procedure #:clean) chicken.fixnum#fxeven? (fixnum) boolean))
-(chicken.fixnum#fxior (#(procedure #:clean) chicken.fixnum#fxior (fixnum fixnum) fixnum))
-(chicken.fixnum#fxmax (#(procedure #:clean) chicken.fixnum#fxmax (fixnum fixnum) fixnum))
-(chicken.fixnum#fxmin (#(procedure #:clean) chicken.fixnum#fxmin (fixnum fixnum) fixnum))
-(chicken.fixnum#fxmod (#(procedure #:clean) chicken.fixnum#fxmod (fixnum fixnum) fixnum))
(chicken.fixnum#fxrem (#(procedure #:clean) chicken.fixnum#fxrem (fixnum fixnum) fixnum))
-(chicken.fixnum#fxneg (#(procedure #:clean) chicken.fixnum#fxneg (fixnum) fixnum))
-(chicken.fixnum#fxnot (#(procedure #:clean) chicken.fixnum#fxnot (fixnum) fixnum))
-(chicken.fixnum#fxodd? (#(procedure #:clean) chicken.fixnum#fxodd? (fixnum) boolean))
-(chicken.fixnum#fxshl (#(procedure #:clean) chicken.fixnum#fxshl (fixnum fixnum) fixnum))
-(chicken.fixnum#fxshr (#(procedure #:clean) chicken.fixnum#fxshr (fixnum fixnum) fixnum))
-(chicken.fixnum#fxxor (#(procedure #:clean) chicken.fixnum#fxxor (fixnum fixnum) fixnum))
(chicken.fixnum#fxlen (#(procedure #:clean) chicken.fixnum#fxlen (fixnum) fixnum))
(chicken.fixnum#fx+? (#(procedure #:pure) chicken.fixnum#fx+? ((or fixnum false) (or fixnum false)) (or fixnum false)))
no title pasted by megane on Mon Aug 19 15:52:07 2019
+---[1]: |-> installation-prefix: /home/nabe/programs/chicken-5-safe-fx |-> csc-options: -O3 |-> runtime-options: |-> repetitions: 10 +---[2]: |-> installation-prefix: /home/nabe/programs/chicken-5-core |-> csc-options: -O3 |-> runtime-options: |-> repetitions: 10 Displaying normalized results (larger numbers indicate better results) === === cpu-time === Programs [1] [2] ======================================== 0_________________________1.00______1.00 binarytrees_______________1.00______1.00 boyer_____________________1.00______1.00 browse____________________1.00______1.00 conform___________________1.00______1.01 cpstak____________________1.03______1.00 ctak______________________1.02______1.00 dderiv____________________1.01______1.00 deriv_____________________1.00______1.00 destructive_______________1.19______1.00 dfa_______________________1.00______1.03 div-iter__________________1.00______1.00 div-rec___________________1.02______1.00 dynamic___________________1.00______1.00 earley____________________1.00______1.00 fannkuch__________________1.01______1.00 fft_______________________1.00______1.00 fib_______________________1.02______1.00 fibc______________________1.00______1.00 fibfp_____________________1.04______1.00 fprint____________________1.06______1.00 fread_____________________1.00______1.02 gcbench___________________1.00______1.01 gold______________________1.00______1.00 gold2_____________________1.00______1.00 graphs____________________1.00______1.01 hanoi_____________________1.01______1.00 integ_____________________1.00______1.01 integ2____________________1.00______1.00 integ3____________________1.01______1.00 kanren____________________1.00______1.00 kernwyk-ackermann_________1.00______1.00 kernwyk-array_____________1.00______1.00 kernwyk-cat_______________1.02______1.00 kernwyk-string____________1.00______1.00 kernwyk-sum_______________1.00______1.00 kernwyk-tail______________1.03______1.00 kernwyk-wc________________1.00______1.04 knucleotide_______________1.01______1.00 lattice___________________1.00______1.00 matrix____________________1.01______1.00 maze______________________1.00______1.00 mazefun___________________1.02______1.00 mbrot_____________________1.05______1.00 nbody_____________________1.00______1.00 nboyer____________________1.00______1.00 nestedloop________________1.02______1.00 nfa_______________________1.01______1.00 nqueens___________________1.00______1.00 ntakl_____________________1.02______1.00 nucleic2__________________1.00______1.03 paraffins_________________1.00______1.00 parsing___________________1.00______1.00 pnpoly____________________1.05______1.00 primes____________________1.00______1.02 psyntax___________________1.00______1.00 puzzle____________________1.00______1.03 ray_______________________1.00______1.05 ray2______________________1.00______1.00 sboyer____________________1.01______1.00 scheme____________________1.00______1.00 sieves-eratosthenes_______1.00______1.01 simplex___________________1.00______1.00 slatex____________________1.02______1.00 sort1_____________________1.00______1.00 tak_______________________1.00______1.02 takl______________________1.01______1.00 takr______________________1.00______1.00 traverse__________________1.00______1.00 travinit__________________1.00______1.02 triangl___________________1.00______1.00 === === major-gcs === Programs [1] [2] ======================================== 0_________________________1.00______1.00 binarytrees_______________1.00______1.00 boyer_____________________1.00______1.00 browse____________________1.00______1.00 conform___________________1.00______1.00 cpstak____________________1.00______1.00 ctak______________________1.00______1.00 dderiv____________________1.00______1.00 deriv_____________________1.00______1.00 destructive_______________1.00______1.00 dfa_______________________1.00______1.00 div-iter__________________1.00______1.00 div-rec___________________1.00______1.00 dynamic___________________1.00______1.00 earley____________________1.00______1.00 fannkuch__________________1.00______1.00 fft_______________________1.00______1.00 fib_______________________1.00______1.00 fibc______________________1.00______1.00 fibfp_____________________1.00______1.00 fprint____________________1.00______1.00 fread_____________________1.00______1.00 gcbench___________________1.00______1.00 gold______________________1.00______1.00 gold2_____________________1.00______1.00 graphs____________________1.00______1.00 hanoi_____________________1.00______1.00 integ_____________________1.00______1.00 integ2____________________1.00______1.00 integ3____________________1.00______1.00 kanren____________________1.00______1.00 kernwyk-ackermann_________1.00______1.00 kernwyk-array_____________1.00______1.00 kernwyk-cat_______________1.00______1.00 kernwyk-string____________1.00______1.00 kernwyk-sum_______________1.08______1.00 kernwyk-tail______________1.25______1.00 kernwyk-wc________________1.00______1.00 knucleotide_______________1.02______1.00 lattice___________________1.00______1.00 matrix____________________1.00______1.00 maze______________________1.00______1.00 mazefun___________________1.00______1.00 mbrot_____________________1.00______1.00 nbody_____________________1.00______1.00 nboyer____________________1.00______1.00 nestedloop________________1.00______1.00 nfa_______________________1.00______1.00 nqueens___________________1.00______1.00 ntakl_____________________1.00______1.00 nucleic2__________________1.00______1.00 paraffins_________________1.00______1.00 parsing___________________1.00______1.13 pnpoly____________________1.00______1.00 primes____________________1.00______1.00 psyntax___________________1.12______1.00 puzzle____________________1.00______1.00 ray_______________________1.00______1.00 ray2______________________1.00______1.00 sboyer____________________1.00______1.00 scheme____________________1.00______1.00 sieves-eratosthenes_______1.00______1.00 simplex___________________1.00______1.00 slatex____________________1.33______1.00 sort1_____________________1.00______1.00 tak_______________________1.00______1.00 takl______________________1.00______1.00 takr______________________1.00______1.00 traverse__________________1.00______1.00 travinit__________________1.00______1.00 triangl___________________1.00______1.00 === === minor-gcs === Programs [1] [2] ======================================== 0_________________________1.00______1.00 binarytrees_______________1.00______1.00 boyer_____________________1.00______1.00 browse____________________1.00______1.00 conform___________________1.00______1.00 cpstak____________________1.00______1.00 ctak______________________1.00______1.00 dderiv____________________1.00______1.00 deriv_____________________1.00______1.00 destructive_______________1.00______1.00 dfa_______________________1.00______1.00 div-iter__________________1.00______1.00 div-rec___________________1.00______1.00 dynamic___________________1.00______1.00 earley____________________1.00______1.00 fannkuch__________________1.00______1.00 fft_______________________1.00______1.00 fib_______________________1.00______1.00 fibc______________________1.00______1.00 fibfp_____________________1.00______1.00 fprint____________________1.00______1.00 fread_____________________1.00______1.00 gcbench___________________1.00______1.00 gold______________________1.00______1.00 gold2_____________________1.00______1.00 graphs____________________1.00______1.00 hanoi_____________________1.00______1.00 integ_____________________1.00______1.00 integ2____________________1.00______1.00 integ3____________________1.00______1.00 kanren____________________1.00______1.00 kernwyk-ackermann_________1.00______1.00 kernwyk-array_____________1.00______1.00 kernwyk-cat_______________1.00______1.00 kernwyk-string____________1.00______1.00 kernwyk-sum_______________1.00______1.00 kernwyk-tail______________1.00______1.00 kernwyk-wc________________1.00______1.00 knucleotide_______________1.00______1.00 lattice___________________1.00______1.00 matrix____________________1.00______1.00 maze______________________1.00______1.00 mazefun___________________1.00______1.00 mbrot_____________________1.00______1.00 nbody_____________________1.00______1.00 nboyer____________________1.00______1.00 nestedloop________________1.00______1.00 nfa_______________________1.00______1.00 nqueens___________________1.00______1.00 ntakl_____________________1.00______1.00 nucleic2__________________1.00______1.00 paraffins_________________1.00______1.00 parsing___________________1.00______1.00 pnpoly____________________1.00______1.00 primes____________________1.00______1.00 psyntax___________________1.00______1.00 puzzle____________________1.00______1.00 ray_______________________1.00______1.00 ray2______________________1.00______1.00 sboyer____________________1.00______1.00 scheme____________________1.00______1.00 sieves-eratosthenes_______1.00______1.00 simplex___________________1.00______1.00 slatex____________________1.00______1.00 sort1_____________________1.00______1.00 tak_______________________1.00______1.00 takl______________________1.00______1.00 takr______________________1.00______1.00 traverse__________________1.00______1.00 travinit__________________1.00______1.00 triangl___________________1.00______1.00 === === major-gcs-time === Programs [1] [2] ======================================== 0_________________________1.00______1.00 binarytrees_______________1.00______1.07 boyer_____________________1.00______1.00 browse____________________1.00______1.04 conform___________________1.05______1.00 cpstak____________________1.00______1.06 ctak______________________1.00______1.40 dderiv____________________1.20______1.00 deriv_____________________1.71______1.00 destructive______________17.00______1.00 dfa_______________________1.00______1.10 div-iter__________________1.00______1.00 div-rec___________________1.00______1.00 dynamic___________________1.00______1.02 earley____________________1.00______1.02 fannkuch__________________1.02______1.00 fft_______________________1.00______1.04 fib_______________________1.00______1.55 fibc______________________1.00______1.11 fibfp_____________________1.00______1.06 fprint____________________1.00______1.00 fread_____________________1.00______1.00 gcbench___________________1.00______1.01 gold______________________1.00______1.01 gold2_____________________1.01______1.00 graphs____________________1.01______1.00 hanoi_____________________1.00______1.09 integ_____________________1.00______1.02 integ2____________________1.00______1.04 integ3____________________1.03______1.00 kanren____________________1.00______1.01 kernwyk-ackermann_________1.00______1.04 kernwyk-array_____________1.00______1.00 kernwyk-cat_______________1.00______1.00 kernwyk-string____________1.00______1.02 kernwyk-sum_______________1.09______1.00 kernwyk-tail______________1.05______1.00 kernwyk-wc________________1.00______1.00 knucleotide_______________1.00______1.00 lattice___________________1.01______1.00 matrix____________________1.00______1.00 maze______________________1.00______1.03 mazefun___________________1.00______1.03 mbrot_____________________1.00______1.00 nbody_____________________1.00______1.06 nboyer____________________1.00______1.01 nestedloop________________1.13______1.00 nfa_______________________1.06______1.00 nqueens___________________1.00______1.00 ntakl_____________________1.00______1.00 nucleic2__________________1.00______1.02 paraffins_________________1.01______1.00 parsing___________________1.00______1.18 pnpoly____________________1.00______1.03 primes____________________1.25______1.00 psyntax___________________1.00______1.00 puzzle____________________1.00______1.80 ray_______________________1.00______1.12 ray2______________________1.00______1.01 sboyer____________________1.00______1.01 scheme____________________1.00______1.00 sieves-eratosthenes_______1.00______1.04 simplex___________________1.01______1.00 slatex____________________1.40______1.00 sort1_____________________1.00______1.01 tak_______________________1.03______1.00 takl______________________1.00______1.00 takr______________________1.17______1.00 traverse__________________1.00______1.11 travinit__________________1.19______1.00 triangl___________________1.03______1.00 === === cpu-time === Programs [1] [2] ======================================== 0___________________________1_________1 binarytrees_________________2_________1 boyer_______________________1_________2 browse______________________1_________2 conform_____________________2_________1 cpstak______________________1_________2 ctak________________________1_________2 dderiv______________________1_________2 deriv_______________________2_________1 destructive_________________1_________2 dfa_________________________2_________1 div-iter____________________1_________1 div-rec_____________________1_________2 dynamic_____________________2_________1 earley______________________2_________1 fannkuch____________________1_________2 fft_________________________1_________2 fib_________________________1_________2 fibc________________________1_________2 fibfp_______________________1_________2 fprint______________________1_________2 fread_______________________2_________1 gcbench_____________________2_________1 gold________________________2_________1 gold2_______________________2_________1 graphs______________________2_________1 hanoi_______________________1_________2 integ_______________________2_________1 integ2______________________1_________2 integ3______________________1_________2 kanren______________________2_________1 kernwyk-ackermann___________1_________2 kernwyk-array_______________2_________1 kernwyk-cat_________________1_________2 kernwyk-string______________2_________1 kernwyk-sum_________________2_________1 kernwyk-tail________________1_________2 kernwyk-wc__________________2_________1 knucleotide_________________1_________2 lattice_____________________2_________1 matrix______________________1_________2 maze________________________2_________1 mazefun_____________________1_________2 mbrot_______________________1_________2 nbody_______________________1_________2 nboyer______________________1_________2 nestedloop__________________1_________2 nfa_________________________1_________2 nqueens_____________________2_________1 ntakl_______________________1_________2 nucleic2____________________2_________1 paraffins___________________2_________1 parsing_____________________2_________1 pnpoly______________________1_________2 primes______________________2_________1 psyntax_____________________2_________1 puzzle______________________2_________1 ray_________________________2_________1 ray2________________________2_________1 sboyer______________________1_________2 scheme______________________1_________1 sieves-eratosthenes_________2_________1 simplex_____________________2_________1 slatex______________________1_________2 sort1_______________________1_________2 tak_________________________2_________1 takl________________________1_________2 takr________________________1_________2 traverse____________________2_________1 travinit____________________2_________1 triangl_____________________2_________1 [1]: 1111111111111111111111111111111111__________________________________ [2]: 1111111111111111111111111111111111__________________________________ (Last place is marked as '_') === === major-gcs === Programs [1] [2] ======================================== 0___________________________1_________1 binarytrees_________________1_________1 boyer_______________________1_________1 browse______________________1_________1 conform_____________________1_________1 cpstak______________________1_________1 ctak________________________1_________1 dderiv______________________1_________1 deriv_______________________1_________1 destructive_________________1_________1 dfa_________________________1_________1 div-iter____________________1_________1 div-rec_____________________1_________1 dynamic_____________________1_________1 earley______________________1_________1 fannkuch____________________1_________1 fft_________________________1_________1 fib_________________________1_________1 fibc________________________1_________1 fibfp_______________________1_________1 fprint______________________1_________1 fread_______________________1_________1 gcbench_____________________1_________1 gold________________________1_________1 gold2_______________________1_________1 graphs______________________1_________1 hanoi_______________________1_________1 integ_______________________1_________1 integ2______________________1_________1 integ3______________________1_________1 kanren______________________1_________1 kernwyk-ackermann___________1_________1 kernwyk-array_______________1_________1 kernwyk-cat_________________1_________1 kernwyk-string______________1_________1 kernwyk-sum_________________1_________2 kernwyk-tail________________1_________2 kernwyk-wc__________________1_________1 knucleotide_________________1_________2 lattice_____________________1_________1 matrix______________________1_________1 maze________________________1_________1 mazefun_____________________1_________1 mbrot_______________________1_________1 nbody_______________________1_________1 nboyer______________________1_________1 nestedloop__________________1_________1 nfa_________________________1_________1 nqueens_____________________1_________1 ntakl_______________________1_________1 nucleic2____________________1_________1 paraffins___________________1_________1 parsing_____________________2_________1 pnpoly______________________1_________1 primes______________________1_________1 psyntax_____________________1_________2 puzzle______________________1_________1 ray_________________________1_________1 ray2________________________1_________1 sboyer______________________1_________1 scheme______________________1_________1 sieves-eratosthenes_________1_________1 simplex_____________________1_________1 slatex______________________1_________2 sort1_______________________1_________1 tak_________________________1_________1 takl________________________1_________1 takr________________________1_________1 traverse____________________1_________1 travinit____________________1_________1 triangl_____________________1_________1 [1]: 11111_ [2]: 1_____ (Last place is marked as '_') === === minor-gcs === Programs [1] [2] ======================================== 0___________________________1_________1 binarytrees_________________1_________1 boyer_______________________1_________1 browse______________________1_________1 conform_____________________1_________1 cpstak______________________1_________1 ctak________________________1_________1 dderiv______________________1_________1 deriv_______________________1_________1 destructive_________________1_________1 dfa_________________________2_________1 div-iter____________________1_________1 div-rec_____________________1_________1 dynamic_____________________1_________1 earley______________________1_________1 fannkuch____________________1_________1 fft_________________________1_________1 fib_________________________1_________1 fibc________________________1_________1 fibfp_______________________1_________1 fprint______________________1_________1 fread_______________________1_________1 gcbench_____________________1_________1 gold________________________1_________1 gold2_______________________1_________1 graphs______________________1_________1 hanoi_______________________1_________1 integ_______________________1_________1 integ2______________________1_________1 integ3______________________1_________1 kanren______________________1_________1 kernwyk-ackermann___________1_________1 kernwyk-array_______________1_________1 kernwyk-cat_________________1_________1 kernwyk-string______________1_________1 kernwyk-sum_________________2_________1 kernwyk-tail________________2_________1 kernwyk-wc__________________1_________1 knucleotide_________________2_________1 lattice_____________________1_________1 matrix______________________1_________1 maze________________________1_________1 mazefun_____________________1_________1 mbrot_______________________1_________1 nbody_______________________1_________1 nboyer______________________1_________1 nestedloop__________________1_________1 nfa_________________________1_________1 nqueens_____________________1_________1 ntakl_______________________1_________1 nucleic2____________________1_________1 paraffins___________________1_________1 parsing_____________________1_________2 pnpoly______________________1_________1 primes______________________1_________1 psyntax_____________________2_________1 puzzle______________________1_________1 ray_________________________1_________1 ray2________________________1_________1 sboyer______________________1_________1 scheme______________________1_________1 sieves-eratosthenes_________1_________1 simplex_____________________1_________1 slatex______________________2_________1 sort1_______________________1_________1 tak_________________________1_________1 takl________________________1_________1 takr________________________1_________1 traverse____________________1_________1 travinit____________________1_________1 triangl_____________________1_________1 [2]: 111111_ [1]: 1______ (Last place is marked as '_') === === major-gcs-time === Programs [1] [2] ======================================== 0___________________________1_________1 binarytrees_________________2_________1 boyer_______________________2_________1 browse______________________2_________1 conform_____________________1_________2 cpstak______________________2_________1 ctak________________________2_________1 dderiv______________________1_________2 deriv_______________________1_________2 destructive_________________1_________2 dfa_________________________2_________1 div-iter____________________1_________1 div-rec_____________________2_________1 dynamic_____________________2_________1 earley______________________2_________1 fannkuch____________________1_________2 fft_________________________2_________1 fib_________________________2_________1 fibc________________________2_________1 fibfp_______________________2_________1 fprint______________________1_________1 fread_______________________1_________2 gcbench_____________________2_________1 gold________________________2_________1 gold2_______________________1_________2 graphs______________________1_________2 hanoi_______________________2_________1 integ_______________________2_________1 integ2______________________2_________1 integ3______________________1_________2 kanren______________________2_________1 kernwyk-ackermann___________2_________1 kernwyk-array_______________2_________1 kernwyk-cat_________________1_________1 kernwyk-string______________2_________1 kernwyk-sum_________________1_________2 kernwyk-tail________________1_________2 kernwyk-wc__________________1_________1 knucleotide_________________2_________1 lattice_____________________1_________2 matrix______________________1_________2 maze________________________2_________1 mazefun_____________________2_________1 mbrot_______________________1_________1 nbody_______________________2_________1 nboyer______________________2_________1 nestedloop__________________1_________2 nfa_________________________1_________2 nqueens_____________________1_________2 ntakl_______________________1_________1 nucleic2____________________2_________1 paraffins___________________1_________2 parsing_____________________2_________1 pnpoly______________________2_________1 primes______________________1_________2 psyntax_____________________1_________2 puzzle______________________2_________1 ray_________________________2_________1 ray2________________________2_________1 sboyer______________________2_________1 scheme______________________1_________1 sieves-eratosthenes_________2_________1 simplex_____________________1_________2 slatex______________________1_________2 sort1_______________________2_________1 tak_________________________1_________2 takl________________________1_________1 takr________________________1_________2 traverse____________________2_________1 travinit____________________1_________2 triangl_____________________1_________2 [2]: 1111111111111111111111111111111111111_________________________ [1]: 1111111111111111111111111_____________________________________ (Last place is marked as '_')
no title pasted by megane on Mon Aug 19 15:52:38 2019
+---[1]: |-> installation-prefix: /home/nabe/programs/chicken-5-core |-> csc-options: -O3 |-> runtime-options: |-> repetitions: 10 +---[2]: |-> installation-prefix: /home/nabe/programs/chicken-5-safe-fx |-> csc-options: -O3 |-> runtime-options: |-> repetitions: 10 Displaying normalized results (larger numbers indicate better results) === === cpu-time === Programs [1] [2] ======================================== 0_________________________1.00______1.00 binarytrees_______________1.00______1.00 boyer_____________________1.00______1.00 browse____________________1.00______1.00 conform___________________1.00______1.00 cpstak____________________1.00______1.00 ctak______________________1.00______1.03 dderiv____________________1.00______1.03 deriv_____________________1.00______1.01 destructive_______________1.00______1.18 dfa_______________________1.03______1.00 div-iter__________________1.00______1.03 div-rec___________________1.00______1.00 dynamic___________________1.00______1.00 earley____________________1.00______1.00 fannkuch__________________1.00______1.02 fft_______________________1.00______1.00 fib_______________________1.00______1.01 fibc______________________1.01______1.00 fibfp_____________________1.00______1.04 fprint____________________1.00______1.05 fread_____________________1.03______1.00 gcbench___________________1.00______1.00 gold______________________1.01______1.00 gold2_____________________1.05______1.00 graphs____________________1.00______1.00 hanoi_____________________1.00______1.00 integ_____________________1.01______1.00 integ2____________________1.00______1.00 integ3____________________1.00______1.01 kanren____________________1.00______1.00 kernwyk-ackermann_________1.00______1.00 kernwyk-array_____________1.00______1.04 kernwyk-cat_______________1.00______1.03 kernwyk-string____________1.00______1.00 kernwyk-sum_______________1.00______1.00 kernwyk-tail______________1.00______1.04 kernwyk-wc________________1.02______1.00 knucleotide_______________1.00______1.01 lattice___________________1.00______1.00 matrix____________________1.00______1.00 maze______________________1.00______1.00 mazefun___________________1.00______1.02 mbrot_____________________1.00______1.04 nbody_____________________1.00______1.00 nboyer____________________1.00______1.00 nestedloop________________1.00______1.04 nfa_______________________1.00______1.01 nqueens___________________1.00______1.00 ntakl_____________________1.00______1.00 nucleic2__________________1.00______1.00 paraffins_________________1.00______1.00 parsing___________________1.00______1.00 pnpoly____________________1.00______1.03 primes____________________1.01______1.00 psyntax___________________1.00______1.00 puzzle____________________1.03______1.00 ray_______________________1.06______1.00 ray2______________________1.00______1.00 sboyer____________________1.00______1.00 scheme____________________1.00______1.00 sieves-eratosthenes_______1.01______1.00 simplex___________________1.00______1.00 slatex____________________1.00______1.00 sort1_____________________1.00______1.00 tak_______________________1.01______1.00 takl______________________1.00______1.00 takr______________________1.00______1.00 traverse__________________1.00______1.00 travinit__________________1.02______1.00 triangl___________________1.04______1.00 === === major-gcs === Programs [1] [2] ======================================== 0_________________________1.00______1.00 binarytrees_______________1.00______1.00 boyer_____________________1.00______1.00 browse____________________1.00______1.00 conform___________________1.00______1.00 cpstak____________________1.00______1.00 ctak______________________1.00______1.00 dderiv____________________1.00______1.00 deriv_____________________1.00______1.00 destructive_______________1.00______1.00 dfa_______________________1.00______1.00 div-iter__________________1.00______1.00 div-rec___________________1.00______1.00 dynamic___________________1.00______1.00 earley____________________1.00______1.00 fannkuch__________________1.00______1.00 fft_______________________1.00______1.00 fib_______________________1.00______1.00 fibc______________________1.00______1.00 fibfp_____________________1.00______1.00 fprint____________________1.00______1.00 fread_____________________1.00______1.00 gcbench___________________1.00______1.00 gold______________________1.00______1.00 gold2_____________________1.00______1.00 graphs____________________1.00______1.00 hanoi_____________________1.00______1.00 integ_____________________1.00______1.00 integ2____________________1.00______1.00 integ3____________________1.00______1.00 kanren____________________1.00______1.00 kernwyk-ackermann_________1.00______1.00 kernwyk-array_____________1.00______1.00 kernwyk-cat_______________1.00______1.00 kernwyk-string____________1.00______1.00 kernwyk-sum_______________1.00______1.08 kernwyk-tail______________1.00______1.33 kernwyk-wc________________1.00______1.00 knucleotide_______________1.03______1.00 lattice___________________1.00______1.00 matrix____________________1.00______1.00 maze______________________1.00______1.00 mazefun___________________1.00______1.00 mbrot_____________________1.00______1.00 nbody_____________________1.00______1.00 nboyer____________________1.00______1.00 nestedloop________________1.00______1.00 nfa_______________________1.00______1.00 nqueens___________________1.00______1.00 ntakl_____________________1.00______1.00 nucleic2__________________1.00______1.00 paraffins_________________1.00______1.00 parsing___________________1.13______1.00 pnpoly____________________1.00______1.00 primes____________________1.00______1.00 psyntax___________________1.00______1.12 puzzle____________________1.00______1.00 ray_______________________1.00______1.00 ray2______________________1.00______1.00 sboyer____________________1.00______1.00 scheme____________________1.00______1.00 sieves-eratosthenes_______1.00______1.00 simplex___________________1.00______1.00 slatex____________________1.00______1.11 sort1_____________________1.00______1.00 tak_______________________1.00______1.00 takl______________________1.00______1.00 takr______________________1.00______1.00 traverse__________________1.00______1.00 travinit__________________1.00______1.00 triangl___________________1.00______1.00 === === minor-gcs === Programs [1] [2] ======================================== 0_________________________1.00______1.00 binarytrees_______________1.00______1.00 boyer_____________________1.00______1.00 browse____________________1.00______1.00 conform___________________1.00______1.00 cpstak____________________1.00______1.00 ctak______________________1.00______1.00 dderiv____________________1.00______1.00 deriv_____________________1.00______1.00 destructive_______________1.00______1.00 dfa_______________________1.00______1.00 div-iter__________________1.00______1.00 div-rec___________________1.00______1.00 dynamic___________________1.00______1.00 earley____________________1.00______1.00 fannkuch__________________1.00______1.00 fft_______________________1.00______1.00 fib_______________________1.00______1.00 fibc______________________1.00______1.00 fibfp_____________________1.00______1.00 fprint____________________1.00______1.00 fread_____________________1.00______1.00 gcbench___________________1.00______1.00 gold______________________1.00______1.00 gold2_____________________1.00______1.00 graphs____________________1.00______1.00 hanoi_____________________1.00______1.00 integ_____________________1.00______1.00 integ2____________________1.00______1.00 integ3____________________1.00______1.00 kanren____________________1.00______1.00 kernwyk-ackermann_________1.00______1.00 kernwyk-array_____________1.00______1.00 kernwyk-cat_______________1.00______1.00 kernwyk-string____________1.00______1.00 kernwyk-sum_______________1.00______1.00 kernwyk-tail______________1.00______1.00 kernwyk-wc________________1.00______1.00 knucleotide_______________1.00______1.00 lattice___________________1.00______1.00 matrix____________________1.00______1.00 maze______________________1.00______1.00 mazefun___________________1.00______1.00 mbrot_____________________1.00______1.00 nbody_____________________1.00______1.00 nboyer____________________1.00______1.00 nestedloop________________1.00______1.00 nfa_______________________1.00______1.00 nqueens___________________1.00______1.00 ntakl_____________________1.00______1.00 nucleic2__________________1.00______1.00 paraffins_________________1.00______1.00 parsing___________________1.00______1.00 pnpoly____________________1.00______1.00 primes____________________1.00______1.00 psyntax___________________1.00______1.00 puzzle____________________1.00______1.00 ray_______________________1.00______1.00 ray2______________________1.00______1.00 sboyer____________________1.00______1.00 scheme____________________1.00______1.00 sieves-eratosthenes_______1.00______1.00 simplex___________________1.00______1.00 slatex____________________1.00______1.00 sort1_____________________1.00______1.00 tak_______________________1.00______1.00 takl______________________1.00______1.00 takr______________________1.00______1.00 traverse__________________1.00______1.00 travinit__________________1.00______1.00 triangl___________________1.00______1.00 === === major-gcs-time === Programs [1] [2] ======================================== 0_________________________1.00______1.00 binarytrees_______________1.00______1.01 boyer_____________________1.00______1.00 browse____________________1.00______1.00 conform___________________1.15______1.00 cpstak____________________1.07______1.00 ctak______________________1.00______1.07 dderiv____________________1.57______1.00 deriv_____________________1.00______1.40 destructive_______________1.00______1.12 dfa_______________________1.14______1.00 div-iter__________________1.00______1.00 div-rec___________________1.00______8.00 dynamic___________________1.00______1.00 earley____________________1.00______1.00 fannkuch__________________1.12______1.00 fft_______________________1.05______1.00 fib_______________________1.66______1.00 fibc______________________1.00______1.00 fibfp_____________________1.27______1.00 fprint____________________1.00______1.00 fread_____________________1.01______1.00 gcbench___________________1.00______1.00 gold______________________1.13______1.00 gold2_____________________1.00______1.03 graphs____________________1.02______1.00 hanoi_____________________1.00______1.03 integ_____________________1.05______1.00 integ2____________________1.04______1.00 integ3____________________1.00______1.02 kanren____________________1.01______1.00 kernwyk-ackermann_________1.01______1.00 kernwyk-array_____________1.00______1.00 kernwyk-cat_______________1.00______1.00 kernwyk-string____________1.00______1.00 kernwyk-sum_______________1.00______1.07 kernwyk-tail______________1.00______1.12 kernwyk-wc________________1.00______1.00 knucleotide_______________1.00______1.01 lattice___________________1.07______1.00 matrix____________________1.00______1.00 maze______________________1.01______1.00 mazefun___________________1.02______1.00 mbrot_____________________1.00______1.00 nbody_____________________1.17______1.00 nboyer____________________1.01______1.00 nestedloop________________1.07______1.00 nfa_______________________1.00______1.06 nqueens___________________1.00______1.00 ntakl_____________________1.00______1.00 nucleic2__________________1.01______1.00 paraffins_________________1.00______1.01 parsing___________________1.15______1.00 pnpoly____________________1.00______1.02 primes____________________1.00______1.04 psyntax___________________1.00______1.01 puzzle____________________9.00______1.00 ray_______________________1.04______1.00 ray2______________________1.01______1.00 sboyer____________________1.01______1.00 scheme____________________1.00______1.00 sieves-eratosthenes_______1.03______1.00 simplex___________________1.06______1.00 slatex____________________1.00______1.11 sort1_____________________1.02______1.00 tak_______________________1.08______1.00 takl______________________1.00______1.00 takr______________________1.00______1.17 traverse__________________1.07______1.00 travinit__________________1.00______1.04 triangl___________________1.00______1.03 === === cpu-time === Programs [1] [2] ======================================== 0___________________________1_________1 binarytrees_________________2_________1 boyer_______________________1_________2 browse______________________1_________2 conform_____________________2_________1 cpstak______________________1_________2 ctak________________________2_________1 dderiv______________________2_________1 deriv_______________________2_________1 destructive_________________2_________1 dfa_________________________1_________2 div-iter____________________2_________1 div-rec_____________________2_________1 dynamic_____________________1_________2 earley______________________1_________2 fannkuch____________________2_________1 fft_________________________2_________1 fib_________________________2_________1 fibc________________________1_________2 fibfp_______________________2_________1 fprint______________________2_________1 fread_______________________1_________2 gcbench_____________________2_________1 gold________________________1_________2 gold2_______________________1_________2 graphs______________________1_________2 hanoi_______________________2_________1 integ_______________________1_________2 integ2______________________2_________1 integ3______________________2_________1 kanren______________________1_________2 kernwyk-ackermann___________2_________1 kernwyk-array_______________2_________1 kernwyk-cat_________________2_________1 kernwyk-string______________1_________2 kernwyk-sum_________________1_________2 kernwyk-tail________________2_________1 kernwyk-wc__________________1_________2 knucleotide_________________2_________1 lattice_____________________1_________2 matrix______________________2_________1 maze________________________1_________2 mazefun_____________________2_________1 mbrot_______________________2_________1 nbody_______________________2_________1 nboyer______________________1_________2 nestedloop__________________2_________1 nfa_________________________2_________1 nqueens_____________________2_________1 ntakl_______________________2_________1 nucleic2____________________1_________2 paraffins___________________1_________2 parsing_____________________2_________1 pnpoly______________________2_________1 primes______________________1_________2 psyntax_____________________1_________2 puzzle______________________1_________2 ray_________________________1_________2 ray2________________________1_________2 sboyer______________________2_________1 scheme______________________2_________1 sieves-eratosthenes_________1_________2 simplex_____________________1_________2 slatex______________________2_________1 sort1_______________________1_________2 tak_________________________1_________2 takl________________________2_________1 takr________________________2_________1 traverse____________________1_________2 travinit____________________1_________2 triangl_____________________1_________2 [2]: 1111111111111111111111111111111111111_________________________________ [1]: 111111111111111111111111111111111_____________________________________ (Last place is marked as '_') === === major-gcs === Programs [1] [2] ======================================== 0___________________________1_________1 binarytrees_________________1_________1 boyer_______________________1_________1 browse______________________1_________1 conform_____________________1_________1 cpstak______________________1_________1 ctak________________________1_________1 dderiv______________________1_________1 deriv_______________________1_________1 destructive_________________1_________1 dfa_________________________1_________1 div-iter____________________1_________1 div-rec_____________________1_________1 dynamic_____________________1_________1 earley______________________1_________1 fannkuch____________________1_________1 fft_________________________1_________1 fib_________________________1_________1 fibc________________________1_________1 fibfp_______________________1_________1 fprint______________________1_________1 fread_______________________1_________1 gcbench_____________________1_________1 gold________________________1_________1 gold2_______________________1_________1 graphs______________________1_________1 hanoi_______________________1_________1 integ_______________________1_________1 integ2______________________1_________1 integ3______________________1_________1 kanren______________________1_________1 kernwyk-ackermann___________1_________1 kernwyk-array_______________1_________1 kernwyk-cat_________________1_________1 kernwyk-string______________1_________1 kernwyk-sum_________________2_________1 kernwyk-tail________________2_________1 kernwyk-wc__________________1_________1 knucleotide_________________1_________2 lattice_____________________1_________1 matrix______________________1_________1 maze________________________1_________1 mazefun_____________________1_________1 mbrot_______________________1_________1 nbody_______________________1_________1 nboyer______________________1_________1 nestedloop__________________1_________1 nfa_________________________1_________1 nqueens_____________________1_________1 ntakl_______________________1_________1 nucleic2____________________1_________1 paraffins___________________1_________1 parsing_____________________1_________2 pnpoly______________________1_________1 primes______________________1_________1 psyntax_____________________2_________1 puzzle______________________1_________1 ray_________________________1_________1 ray2________________________1_________1 sboyer______________________1_________1 scheme______________________1_________1 sieves-eratosthenes_________1_________1 simplex_____________________1_________1 slatex______________________2_________1 sort1_______________________1_________1 tak_________________________1_________1 takl________________________1_________1 takr________________________1_________1 traverse____________________1_________1 travinit____________________1_________1 triangl_____________________1_________1 [2]: 1111__ [1]: 11____ (Last place is marked as '_') === === minor-gcs === Programs [1] [2] ======================================== 0___________________________1_________1 binarytrees_________________1_________1 boyer_______________________1_________1 browse______________________1_________1 conform_____________________1_________1 cpstak______________________1_________1 ctak________________________1_________1 dderiv______________________1_________1 deriv_______________________1_________1 destructive_________________1_________1 dfa_________________________1_________2 div-iter____________________1_________1 div-rec_____________________1_________1 dynamic_____________________1_________1 earley______________________1_________1 fannkuch____________________1_________1 fft_________________________1_________1 fib_________________________1_________1 fibc________________________1_________1 fibfp_______________________1_________1 fprint______________________1_________1 fread_______________________1_________1 gcbench_____________________1_________1 gold________________________1_________1 gold2_______________________1_________1 graphs______________________1_________1 hanoi_______________________1_________1 integ_______________________1_________1 integ2______________________1_________1 integ3______________________1_________1 kanren______________________1_________1 kernwyk-ackermann___________1_________1 kernwyk-array_______________1_________1 kernwyk-cat_________________1_________1 kernwyk-string______________1_________1 kernwyk-sum_________________1_________2 kernwyk-tail________________1_________2 kernwyk-wc__________________1_________1 knucleotide_________________2_________1 lattice_____________________1_________1 matrix______________________1_________1 maze________________________1_________1 mazefun_____________________1_________1 mbrot_______________________1_________1 nbody_______________________1_________1 nboyer______________________1_________1 nestedloop__________________1_________1 nfa_________________________1_________1 nqueens_____________________1_________1 ntakl_______________________1_________1 nucleic2____________________1_________1 paraffins___________________1_________1 parsing_____________________2_________1 pnpoly______________________1_________1 primes______________________1_________1 psyntax_____________________1_________2 puzzle______________________1_________1 ray_________________________1_________1 ray2________________________1_________1 sboyer______________________1_________1 scheme______________________1_________1 sieves-eratosthenes_________1_________1 simplex_____________________1_________1 slatex______________________1_________2 sort1_______________________1_________1 tak_________________________1_________1 takl________________________1_________1 takr________________________1_________1 traverse____________________1_________1 travinit____________________1_________1 triangl_____________________1_________1 [1]: 11111__ [2]: 11_____ (Last place is marked as '_') === === major-gcs-time === Programs [1] [2] ======================================== 0___________________________1_________1 binarytrees_________________2_________1 boyer_______________________2_________1 browse______________________2_________1 conform_____________________1_________2 cpstak______________________1_________2 ctak________________________2_________1 dderiv______________________1_________2 deriv_______________________2_________1 destructive_________________2_________1 dfa_________________________1_________2 div-iter____________________1_________1 div-rec_____________________2_________1 dynamic_____________________2_________1 earley______________________2_________1 fannkuch____________________1_________2 fft_________________________1_________2 fib_________________________1_________2 fibc________________________1_________2 fibfp_______________________1_________2 fprint______________________1_________1 fread_______________________1_________2 gcbench_____________________1_________2 gold________________________1_________2 gold2_______________________2_________1 graphs______________________1_________2 hanoi_______________________2_________1 integ_______________________1_________2 integ2______________________1_________2 integ3______________________2_________1 kanren______________________1_________2 kernwyk-ackermann___________1_________2 kernwyk-array_______________1_________2 kernwyk-cat_________________1_________1 kernwyk-string______________2_________1 kernwyk-sum_________________2_________1 kernwyk-tail________________2_________1 kernwyk-wc__________________1_________1 knucleotide_________________2_________1 lattice_____________________1_________2 matrix______________________1_________2 maze________________________1_________2 mazefun_____________________1_________2 mbrot_______________________1_________1 nbody_______________________1_________2 nboyer______________________1_________2 nestedloop__________________1_________2 nfa_________________________2_________1 nqueens_____________________1_________1 ntakl_______________________1_________1 nucleic2____________________1_________2 paraffins___________________2_________1 parsing_____________________1_________2 pnpoly______________________2_________1 primes______________________2_________1 psyntax_____________________2_________1 puzzle______________________1_________2 ray_________________________1_________2 ray2________________________1_________2 sboyer______________________1_________2 scheme______________________1_________1 sieves-eratosthenes_________1_________2 simplex_____________________1_________2 slatex______________________2_________1 sort1_______________________1_________2 tak_________________________1_________2 takl________________________1_________1 takr________________________2_________1 traverse____________________1_________2 travinit____________________2_________1 triangl_____________________2_________1 [1]: 111111111111111111111111111111111111_________________________ [2]: 1111111111111111111111111____________________________________ (Last place is marked as '_')
fib fx benchmark added by megane on Mon Aug 19 17:18:55 2019
::::::::::::::
test-fx.sh
::::::::::::::
#!/usr/bin/env bash
set -euo pipefail
D="$HOME/programs"
reps=10
function doit () {
f="$1"
opt="$2"
echo "################################################## $f $opt"
"$D/chicken-5-core/bin/csc" $opt "$f" -o fib-fx-core
"$D/chicken-5-safe-fx/bin/csc" $opt "$f" -o fib-fx-safe-fx
echo "#################### vanilla"
perf stat -r $reps ./fib-fx-core 36
echo "#################### safe-fx"
perf stat -r $reps ./fib-fx-safe-fx 36
}
more test-fx.sh fib-fx1.scm fib-fx.scm | cat
doit "fib-fx1.scm" "-O1"
doit "fib-fx.scm" "-O1"
doit "fib-fx1.scm" "-O3"
doit "fib-fx.scm" "-O3"
doit "fib-fx1.scm" "-O4"
doit "fib-fx.scm" "-O4"
::::::::::::::
fib-fx1.scm
::::::::::::::
(import (chicken fixnum)
(chicken process-context))
(define (fib n)
(if (or (eq? n 0) (eq? n 1))
n
(fx+ (fib (fx- n 1)) (fib (fx- n 2)))))
(let ([l (string->number (car (command-line-arguments)))])
(let loop ((n 0))
(when (< n l)
(fib n)
(loop (+ n 1)))))
::::::::::::::
fib-fx.scm
::::::::::::::
(import (chicken fixnum)
(chicken process-context))
(define (fib n)
(if (or (fx= n 0) (fx= n 1)) ; <- this is different
n
(fx+ (fib (fx- n 1)) (fib (fx- n 2)))))
(let ([l (string->number (car (command-line-arguments)))])
(let loop ((n 0))
(when (< n l)
(fib n)
(loop (+ n 1)))))
################################################## fib-fx1.scm -O1
#################### vanilla
Performance counter stats for './fib-fx-core 36' (10 runs):
1935.991241 task-clock (msec) # 0.997 CPUs utilized ( +- 0.17% )
318 context-switches # 0.164 K/sec ( +- 31.63% )
0 cpu-migrations # 0.000 K/sec ( +-100.00% )
715 page-faults # 0.370 K/sec ( +- 0.06% )
5,793,135,159 cycles # 2.992 GHz ( +- 0.17% )
2,561,777,103 stalled-cycles-frontend # 44.22% frontend cycles idle ( +- 0.38% )
10,417,900,595 instructions # 1.80 insn per cycle
# 0.25 stalled cycles per insn ( +- 0.01% )
1,566,097,814 branches # 808.938 M/sec ( +- 0.01% )
32,342,317 branch-misses # 2.07% of all branches ( +- 0.09% )
1.941413298 seconds time elapsed ( +- 0.16% )
#################### safe-fx
Performance counter stats for './fib-fx-safe-fx 36' (10 runs):
2414.382300 task-clock (msec) # 0.999 CPUs utilized ( +- 0.24% )
229 context-switches # 0.095 K/sec ( +- 39.22% )
0 cpu-migrations # 0.000 K/sec ( +-100.00% )
715 page-faults # 0.296 K/sec ( +- 0.07% )
7,225,548,922 cycles # 2.993 GHz ( +- 0.24% )
2,430,424,842 stalled-cycles-frontend # 33.64% frontend cycles idle ( +- 0.92% )
12,204,969,776 instructions # 1.69 insn per cycle
# 0.20 stalled cycles per insn ( +- 0.00% )
2,500,947,812 branches # 1035.854 M/sec ( +- 0.00% )
80,279,543 branch-misses # 3.21% of all branches ( +- 1.13% )
2.417536785 seconds time elapsed ( +- 0.23% )
################################################## fib-fx.scm -O1
#################### vanilla
Performance counter stats for './fib-fx-core 36' (10 runs):
1932.742966 task-clock (msec) # 0.998 CPUs utilized ( +- 0.08% )
276 context-switches # 0.143 K/sec ( +- 35.31% )
0 cpu-migrations # 0.000 K/sec ( +- 66.67% )
715 page-faults # 0.370 K/sec ( +- 0.04% )
5,783,676,896 cycles # 2.992 GHz ( +- 0.09% )
2,553,242,844 stalled-cycles-frontend # 44.15% frontend cycles idle ( +- 0.15% )
10,417,744,475 instructions # 1.80 insn per cycle
# 0.25 stalled cycles per insn ( +- 0.01% )
1,566,053,371 branches # 810.275 M/sec ( +- 0.01% )
32,329,260 branch-misses # 2.06% of all branches ( +- 0.08% )
1.936866315 seconds time elapsed ( +- 0.07% )
#################### safe-fx
Performance counter stats for './fib-fx-safe-fx 36' (10 runs):
2411.102410 task-clock (msec) # 0.999 CPUs utilized ( +- 0.12% )
78 context-switches # 0.032 K/sec ( +- 89.85% )
0 cpu-migrations # 0.000 K/sec ( +- 66.67% )
716 page-faults # 0.297 K/sec ( +- 0.06% )
7,216,470,610 cycles # 2.993 GHz ( +- 0.12% )
2,424,310,089 stalled-cycles-frontend # 33.59% frontend cycles idle ( +- 0.42% )
12,204,477,279 instructions # 1.69 insn per cycle
# 0.20 stalled cycles per insn ( +- 0.00% )
2,500,847,725 branches # 1037.222 M/sec ( +- 0.00% )
79,331,545 branch-misses # 3.17% of all branches ( +- 0.09% )
2.412798036 seconds time elapsed ( +- 0.12% )
################################################## fib-fx1.scm -O3
#################### vanilla
Performance counter stats for './fib-fx-core 36' (10 runs):
1698.120891 task-clock (msec) # 0.999 CPUs utilized ( +- 0.20% )
151 context-switches # 0.089 K/sec ( +- 49.87% )
0 cpu-migrations # 0.000 K/sec ( +- 50.92% )
715 page-faults # 0.421 K/sec ( +- 0.05% )
5,082,008,041 cycles # 2.993 GHz ( +- 0.20% )
2,231,481,324 stalled-cycles-frontend # 43.91% frontend cycles idle ( +- 0.44% )
8,890,002,633 instructions # 1.75 insn per cycle
# 0.25 stalled cycles per insn ( +- 0.01% )
1,234,673,201 branches # 727.082 M/sec ( +- 0.01% )
34,976,983 branch-misses # 2.83% of all branches ( +- 0.07% )
1.700624777 seconds time elapsed ( +- 0.18% )
#################### safe-fx
Performance counter stats for './fib-fx-safe-fx 36' (10 runs):
1813.473111 task-clock (msec) # 0.999 CPUs utilized ( +- 0.16% )
161 context-switches # 0.089 K/sec ( +- 52.27% )
0 cpu-migrations # 0.000 K/sec
716 page-faults # 0.395 K/sec ( +- 0.06% )
5,427,251,115 cycles # 2.993 GHz ( +- 0.16% )
1,970,262,064 stalled-cycles-frontend # 36.30% frontend cycles idle ( +- 0.40% )
9,981,767,270 instructions # 1.84 insn per cycle
# 0.20 stalled cycles per insn ( +- 0.01% )
1,859,141,839 branches # 1025.183 M/sec ( +- 0.01% )
27,096,839 branch-misses # 1.46% of all branches ( +- 0.03% )
1.815859468 seconds time elapsed ( +- 0.14% )
################################################## fib-fx.scm -O3
#################### vanilla
Performance counter stats for './fib-fx-core 36' (10 runs):
1699.129310 task-clock (msec) # 0.998 CPUs utilized ( +- 0.18% )
219 context-switches # 0.129 K/sec ( +- 39.27% )
0 cpu-migrations # 0.000 K/sec ( +-100.00% )
716 page-faults # 0.421 K/sec ( +- 0.08% )
5,084,675,888 cycles # 2.993 GHz ( +- 0.18% )
2,234,788,662 stalled-cycles-frontend # 43.95% frontend cycles idle ( +- 0.36% )
8,889,495,782 instructions # 1.75 insn per cycle
# 0.25 stalled cycles per insn ( +- 0.00% )
1,234,592,347 branches # 726.603 M/sec ( +- 0.00% )
35,025,948 branch-misses # 2.84% of all branches ( +- 0.10% )
1.702840968 seconds time elapsed ( +- 0.21% )
#################### safe-fx
Performance counter stats for './fib-fx-safe-fx 36' (10 runs):
1700.764298 task-clock (msec) # 0.998 CPUs utilized ( +- 1.30% )
239 context-switches # 0.140 K/sec ( +- 35.06% )
0 cpu-migrations # 0.000 K/sec ( +- 66.67% )
715 page-faults # 0.421 K/sec ( +- 0.07% )
5,089,496,258 cycles # 2.992 GHz ( +- 1.30% )
1,964,902,486 stalled-cycles-frontend # 38.61% frontend cycles idle ( +- 0.93% )
9,433,045,886 instructions # 1.85 insn per cycle
# 0.21 stalled cycles per insn ( +- 0.00% )
1,546,200,236 branches # 909.121 M/sec ( +- 0.00% )
34,708,955 branch-misses # 2.24% of all branches ( +- 15.84% )
1.704831741 seconds time elapsed ( +- 1.28% )
################################################## fib-fx1.scm -O4
#################### vanilla
Performance counter stats for './fib-fx-core 36' (10 runs):
1715.282087 task-clock (msec) # 0.998 CPUs utilized ( +- 0.15% )
298 context-switches # 0.173 K/sec ( +- 33.13% )
0 cpu-migrations # 0.000 K/sec
716 page-faults # 0.417 K/sec ( +- 0.08% )
5,132,687,289 cycles # 2.992 GHz ( +- 0.16% )
2,143,224,133 stalled-cycles-frontend # 41.76% frontend cycles idle ( +- 0.39% )
9,046,145,038 instructions # 1.76 insn per cycle
# 0.24 stalled cycles per insn ( +- 0.00% )
1,234,625,556 branches # 719.780 M/sec ( +- 0.01% )
32,981,217 branch-misses # 2.67% of all branches ( +- 0.13% )
1.719543647 seconds time elapsed ( +- 0.10% )
#################### safe-fx
Performance counter stats for './fib-fx-safe-fx 36' (10 runs):
1705.130718 task-clock (msec) # 0.999 CPUs utilized ( +- 0.16% )
122 context-switches # 0.072 K/sec ( +- 52.84% )
0 cpu-migrations # 0.000 K/sec
716 page-faults # 0.420 K/sec ( +- 0.08% )
5,103,127,699 cycles # 2.993 GHz ( +- 0.16% )
2,117,807,787 stalled-cycles-frontend # 41.50% frontend cycles idle ( +- 0.36% )
9,047,732,319 instructions # 1.77 insn per cycle
# 0.23 stalled cycles per insn ( +- 0.01% )
1,234,880,772 branches # 724.215 M/sec ( +- 0.01% )
33,016,911 branch-misses # 2.67% of all branches ( +- 0.16% )
1.707016915 seconds time elapsed ( +- 0.14% )
################################################## fib-fx.scm -O4
#################### vanilla
Performance counter stats for './fib-fx-core 36' (10 runs):
1712.733998 task-clock (msec) # 0.998 CPUs utilized ( +- 0.11% )
138 context-switches # 0.081 K/sec ( +- 55.21% )
0 cpu-migrations # 0.000 K/sec ( +- 66.67% )
716 page-faults # 0.418 K/sec ( +- 0.07% )
5,125,795,745 cycles # 2.993 GHz ( +- 0.11% )
2,137,129,186 stalled-cycles-frontend # 41.69% frontend cycles idle ( +- 0.28% )
9,045,656,591 instructions # 1.76 insn per cycle
# 0.24 stalled cycles per insn ( +- 0.00% )
1,234,528,012 branches # 720.794 M/sec ( +- 0.00% )
32,990,800 branch-misses # 2.67% of all branches ( +- 0.08% )
1.715652729 seconds time elapsed ( +- 0.13% )
#################### safe-fx
Performance counter stats for './fib-fx-safe-fx 36' (10 runs):
1701.165999 task-clock (msec) # 0.999 CPUs utilized ( +- 0.08% )
123 context-switches # 0.072 K/sec ( +- 63.52% )
0 cpu-migrations # 0.000 K/sec
716 page-faults # 0.421 K/sec ( +- 0.05% )
5,091,280,944 cycles # 2.993 GHz ( +- 0.08% )
2,108,054,217 stalled-cycles-frontend # 41.41% frontend cycles idle ( +- 0.18% )
9,045,481,736 instructions # 1.78 insn per cycle
# 0.23 stalled cycles per insn ( +- 0.00% )
1,234,495,976 branches # 725.676 M/sec ( +- 0.00% )
33,039,643 branch-misses # 2.68% of all branches ( +- 0.08% )
1.703338879 seconds time elapsed ( +- 0.10% )