diff options
Diffstat (limited to 'benchmark-suite/benchmarks/structs.bm')
-rw-r--r-- | benchmark-suite/benchmarks/structs.bm | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/benchmark-suite/benchmarks/structs.bm b/benchmark-suite/benchmarks/structs.bm new file mode 100644 index 000000000..65c8e975e --- /dev/null +++ b/benchmark-suite/benchmarks/structs.bm @@ -0,0 +1,68 @@ +;;; -*- mode: scheme; coding: iso-8859-1; -*- +;;; Structs. +;;; +;;; Copyright 2009 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 structs) + :use-module (benchmark-suite lib)) + +;; Note: Use `--iteration-factor' to change this. +(define iterations 2000000) + +(define vtable2 + (make-vtable "prpr")) + +(define vtable7 + (make-vtable (string-concatenate (make-list 7 "pr")))) + + +(with-benchmark-prefix "constructors" + + (benchmark "make-struct2 (opcode)" iterations + (make-struct vtable2 0 1 2)) + + (benchmark "make-struct2 (procedure)" iterations + (let ((s make-struct)) + (s vtable2 0 1 2))) + + (benchmark "make-struct7 (opcode)" iterations + (make-struct vtable7 0 1 2 3 4 5 6 7)) + + (benchmark "make-struct7 (procedure)" iterations + (let ((s make-struct)) + (s vtable7 0 1 2 3 4 5 6 7)))) + + +(with-benchmark-prefix "pairs" ;; for comparison + + (benchmark "cons (opcode)" iterations + (cons 1 2)) + + (benchmark "cons (procedure)" iterations + (let ((c cons)) + (c 1 2))) + + (benchmark "list (opcode)" iterations + (list 1 2 3 4 5 6 7)) + + (benchmark "list (procedure)" iterations + (let ((l list)) + (l 1 2 3 4 5 6 7))) + + (benchmark "make-list" iterations + (make-list 7))) |