From: Juho S. <js...@us...> - 2006-12-01 18:14:05
|
Update of /cvsroot/sbcl/sbcl/src/pcl In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv24352/src/pcl Modified Files: dfun.lisp Log Message: 1.0.0.10: Set SB-PCL::*MAX-EMF-PRECOMPUTATION-METHODS* to a non-NIL value, to fix performance problems when loading generic functions with hundreds of methods. (Reported by Todd Sabin and Jeremy Brown) * Use a small value, rather than 100 as used in CMUCL, to flush out possible problems with doing a limited amount of precomputation. Index: dfun.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/pcl/dfun.lisp,v retrieving revision 1.52 retrieving revision 1.53 diff -u -d -r1.52 -r1.53 --- dfun.lisp 7 Nov 2006 10:22:16 -0000 1.52 +++ dfun.lisp 1 Dec 2006 18:13:50 -0000 1.53 @@ -756,8 +756,16 @@ (defvar *lazy-dfun-compute-p* t) (defvar *early-p* nil) +;;; This variable is used for controlling the load-time effective +;;; method precomputation: precomputation will only be done for emfs +;;; with fewer than methods than this value. This value has +;;; traditionally been NIL on SBCL (meaning that precomputation will +;;; always be done) but that makes method loading O(n^2). Use a small +;;; value for now, to flush out any possible problems that doing a +;;; limited amount of precomputation might cause. If none appear, we +;;; might change it to a larger value later. -- JES, 2006-12-01 (declaim (type (or null unsigned-byte) *max-emf-precomputation-methods*)) -(defvar *max-emf-precomputation-methods* nil) +(defvar *max-emf-precomputation-methods* 1) (defun finalize-specializers (gf) (let ((methods (generic-function-methods gf))) |