mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-29 19:30:36 +02:00
Augment `arithmetic.bm'.
* benchmark-suite/benchmarks/arithmetic.bm (repeat): Change the syntax. Add support for binary OP. ("fixnum")["1+", "1-"]: Adjust accordingly. ["+", "-"]: New benchmarks.
This commit is contained in:
parent
0b9bdb1b57
commit
9cec275968
1 changed files with 21 additions and 6 deletions
|
@ -23,13 +23,22 @@
|
|||
|
||||
(define-syntax repeat
|
||||
(lambda (s)
|
||||
;; Construct an expression of the form `(OP (OP (OP BODY)))', with a
|
||||
;; Construct an expression of the form `(OP (OP (OP SEED)))', with a
|
||||
;; depth of COUNT.
|
||||
(syntax-case s ()
|
||||
((_ op body count)
|
||||
(syntax-case s (<>)
|
||||
((_ (op x <>) seed count) ;; binary OP
|
||||
(number? (syntax->datum #'count))
|
||||
(let loop ((count (syntax->datum #'count))
|
||||
(result #'body))
|
||||
(result #'seed))
|
||||
(if (= 0 count)
|
||||
result
|
||||
(loop (1- count)
|
||||
(with-syntax ((result result))
|
||||
#'(op x result))))))
|
||||
((_ (op <>) seed count) ;; unary OP
|
||||
(number? (syntax->datum #'count))
|
||||
(let loop ((count (syntax->datum #'count))
|
||||
(result #'seed))
|
||||
(if (= 0 count)
|
||||
result
|
||||
(loop (1- count)
|
||||
|
@ -40,7 +49,13 @@
|
|||
(with-benchmark-prefix "fixnum"
|
||||
|
||||
(benchmark "1+" 1e7
|
||||
(repeat 1+ 2 100))
|
||||
(repeat (1+ <>) 2 100))
|
||||
|
||||
(benchmark "1-" 1e7
|
||||
(repeat 1- 2 100)))
|
||||
(repeat (1- <>) 2 100))
|
||||
|
||||
(benchmark "+" 1e7
|
||||
(repeat (+ 2 <>) 7 100))
|
||||
|
||||
(benchmark "-" 1e7
|
||||
(repeat (+ 2 <>) 7 100)))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue