in reply to An AUTOLOAD performance puzzler

The process-wide method cache is invalidated every time you assign to the symbol table, use eval-string, assign to @ISA, or create subs inside eval-string.

AUTOLOAD is for those cases where you aren't going to know what is valid until runtime. Normally you'd write your code such that everything that can be known prior to run-time is already compiled, in place, and named properly. That way, when you come by later and say $foo->bar or bar( ... ) perl already knows where to find &bar. If you did it right, you did all that during BEGIN before even CHECK and INIT.