diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-01-11 22:37:00 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-01-11 22:37:00 +0100 |
commit | 87a8b56f8c90a4fb88c5be961b1f5c2a54aed335 (patch) | |
tree | 523366cbd59a3456da787acbadeccefcf7e967c1 | |
parent | 894d0b894daae001495c748b3352cd79918d3789 (diff) |
Add 'string-hash' benchmarks.
* benchmark-suite/benchmarks/hash.bm: New file.
* benchmark-suite/Makefile.am (SCM_BENCHMARKS): Add it.
-rw-r--r-- | benchmark-suite/Makefile.am | 1 | ||||
-rw-r--r-- | benchmark-suite/benchmarks/hash.bm | 53 |
2 files changed, 54 insertions, 0 deletions
diff --git a/benchmark-suite/Makefile.am b/benchmark-suite/Makefile.am index 9fa556891..12221211e 100644 --- a/benchmark-suite/Makefile.am +++ b/benchmark-suite/Makefile.am @@ -3,6 +3,7 @@ SCM_BENCHMARKS = benchmarks/0-reference.bm \ benchmarks/bytevectors.bm \ benchmarks/chars.bm \ benchmarks/continuations.bm \ + benchmarks/hash.bm \ benchmarks/if.bm \ benchmarks/logand.bm \ benchmarks/ports.bm \ diff --git a/benchmark-suite/benchmarks/hash.bm b/benchmark-suite/benchmarks/hash.bm new file mode 100644 index 000000000..9c2be57a1 --- /dev/null +++ b/benchmark-suite/benchmarks/hash.bm @@ -0,0 +1,53 @@ +;;; hash.bm --- Hash functions. -*- Scheme -*- +;;; +;;; Copyright (C) 2015 Free Software Foundation, Inc. +;;; +;;; This program is free software; you can redistribute it and/or +;;; modify it under the terms of the GNU Lesser General Public License +;;; as published by the Free Software Foundation; either version 3, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU Lesser General Public License for more details. +;;; +;;; You should have received a copy of the GNU Lesser General Public +;;; License along with this software; see the file COPYING.LESSER. If +;;; not, write to the Free Software Foundation, Inc., 51 Franklin +;;; Street, Fifth Floor, Boston, MA 02110-1301 USA + +(define-module (benchmarks write) + #:use-module (benchmark-suite lib)) + +(define %narrow-string + (make-string 30 #\a)) + +(define %wide-string + (make-string 30 #\λ)) + +(define %long-string + (make-string 300 #\x)) + +(define-syntax repeat + (lambda (s) + (syntax-case s () + ((_ 1 exp) + #'exp) + ((_ count exp) + (with-syntax ((count (- (syntax->datum #'count) 1))) + #'(begin + exp + (repeat count exp))))))) + + +(with-benchmark-prefix "string-hash" + + (benchmark "narrow string" 100000 + (repeat 100 (string-hash %narrow-string))) + + (benchmark "wide string" 100000 + (repeat 100 (string-hash %wide-string))) + + (benchmark "long string" 100000 + (repeat 100 (string-hash %long-string)))) |