#67: initarg checking performance --------------------------+------------------------------------------------- Reporter: ehuelsmann | Owner: somebody Type: enhancement | Status: new Priority: major | Milestone: unscheduled Component: CLOS | Version: Resolution: | Keywords: performance --------------------------+------------------------------------------------- Comment(by ehuelsmann): I was confused for a moment, so recording the outcome here now that I'm not confused anymore: Even though the computation of the applicable methods for SHARED- INITIALIZE and INITIALIZE-INSTANCE takes the values of the initargs, there's only a single parameter to be dispatched on in the latter case (the instance itself) and two parameters in the former case (the instance itself and the slot-names parameter). This means INITIALIZE-INSTANCE and SHARED-INITIALIZE can have a shared cache of valid initargs, keyed on the class of the instance and the value of slot-names being (EQ NIL)/(EQ T)/CONS. The cache is invalidated by redefinition of any one of the superclasses of the instance-class (or of the class itself) or a defgeneric/defmethod on INITIALIZE-INSTANCE or SHARED-INITIALIZE concerning any one of those classes. -- Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/67#comment:3> armedbear <http://common-lisp.net/project/armedbear> armedbear