2009/12/1 Alessio Stalla alessiostalla@gmail.com:
Let me add that, iirc, our compiler is smart enough to translate (funcall #'something a b c) to the same code it generates for (something a b c). It would only need to fall back to reflection if the parameter to funcall is not constant, as in (let ((fn #'something)) (funcall fn a b c)). Also what is especially costly about reflection is not the invocation per se but the lookup of the methods, and that is done only once, when the primitive is instantiated or when it makes the first reflective call (depending on the "lazy" flag).
I think the obvious route forward is to make a patch and measure. Then we'll know whether there are performance changes. Has anybody done measurements with the current partial patches, or have I missed a more comprehensive patch?