diff options
author | Matthias Benkard <code@mail.matthias.benkard.de> | 2007-09-23 03:23:01 +0200 |
---|---|---|
committer | Matthias Benkard <code@mail.matthias.benkard.de> | 2007-09-23 03:23:01 +0200 |
commit | 0544272da832227ad04ae1a48c478a166e81077d (patch) | |
tree | 6cd047f1737c31361b32ae58370ed25776e509ab /Lisp/performance-hacks.lisp | |
parent | 7765ad52e00034edd23bb09bade83d8b282f8040 (diff) |
Make memory management a lot saner.
darcs-hash:274be9f0ed5fa33e5e883d7b3df57f00c567e777
Diffstat (limited to 'Lisp/performance-hacks.lisp')
-rw-r--r-- | Lisp/performance-hacks.lisp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/Lisp/performance-hacks.lisp b/Lisp/performance-hacks.lisp new file mode 100644 index 0000000..054fe5e --- /dev/null +++ b/Lisp/performance-hacks.lisp @@ -0,0 +1,27 @@ +(in-package #:mulk.objective-cl) + +;;; This file is for hacks that we might not want to actually use in a +;;; production environment but which might be useful in determining +;;; performance bottlenecks. These hacks may depend on specific +;;; versions of third-party libraries such as CFFI. + + +;;; The following hack depends on a specific CFFI snapshot. It tries to +;;; alleviate the apparent slowness of CFFI::PARSE-TYPE in that +;;; particular snapshot. +;;; +;;; The performance improvement for method calls accomplished by this +;;; hack amounts to approximately 80 % for PRIMITIVE-INVOKE and +;;; approximately 50 % for INVOKE. +#+(or) +(progn + (defparameter *cffi-hacked* nil) + (eval-when (:load-toplevel) + ;; If we do this more than once, we cache our own cached function, + ;; which is kind of useless. + (unless *cffi-hacked* + (setq *cffi-hacked* t) + (let ((original-cffi-parse-type-fn (fdefinition 'cffi::parse-type))) + (define-cached-function cffi::parse-type (type) + type + (funcall original-cffi-parse-type-fn type)))))) |