summaryrefslogtreecommitdiff
path: root/Lisp/performance-hacks.lisp
diff options
context:
space:
mode:
authorMatthias Benkard <code@mail.matthias.benkard.de>2007-09-23 03:23:01 +0200
committerMatthias Benkard <code@mail.matthias.benkard.de>2007-09-23 03:23:01 +0200
commit0544272da832227ad04ae1a48c478a166e81077d (patch)
tree6cd047f1737c31361b32ae58370ed25776e509ab /Lisp/performance-hacks.lisp
parent7765ad52e00034edd23bb09bade83d8b282f8040 (diff)
Make memory management a lot saner.
darcs-hash:274be9f0ed5fa33e5e883d7b3df57f00c567e777
Diffstat (limited to 'Lisp/performance-hacks.lisp')
-rw-r--r--Lisp/performance-hacks.lisp27
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))))))