(in-package :cl-smoke.benchmark) (let ((array (make-instance 'qt:byte-array :args '("foobar")))) (defun inline-call (iterations) (declare (fixnum iterations) (optimize (speed 3))) (let ((char #\Null)) (declare (character char)) (dotimes (i iterations char) (setf char (cxx:aref array 0)))))) (let ((object (make-instance 'qt:object))) ; (declare (qt:object object)) (defun simple-call (iterations) (declare (fixnum iterations) (optimize (speed 3))) (dotimes (i iterations) (cxx:kill-timer object 0)))) #+sbcl (smoke::define-resolve-at-compile-time cxx:kill-timer) (let ((object (make-instance 'qt:object))) (declare (qt:object object)) (defun simple-call-compile-time (iterations) (declare (fixnum iterations) (optimize (speed 3))) (dotimes (i iterations) (cxx:kill-timer object 0)))) (defclass my-object (qt:object) () (:metaclass cxx:class)) (defun signal-slot (iterations) (declare (fixnum iterations) (optimize (speed 3))) (let ((my-signal (make-instance 'cl-smoke.qt.core::qsignal :argument-types nil))) (declare (function my-signal)) (qt:connect my-signal #'(lambda ())) (dotimes (i iterations) (funcall my-signal)))) (defun construct (iterations) (declare (fixnum iterations) (optimize (speed 3))) (dotimes (i iterations) (make-instance 'qt:object)))