:::::::::::::: 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% )