From 87a8b56f8c90a4fb88c5be961b1f5c2a54aed335 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 11 Jan 2015 22:37:00 +0100 Subject: Add 'string-hash' benchmarks. * benchmark-suite/benchmarks/hash.bm: New file. * benchmark-suite/Makefile.am (SCM_BENCHMARKS): Add it. --- benchmark-suite/Makefile.am | 1 + benchmark-suite/benchmarks/hash.bm | 53 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 benchmark-suite/benchmarks/hash.bm (limited to 'benchmark-suite') 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)))) -- cgit v1.2.3