No this doesn't help. You're still paying the cost of a function call. And function calls are s-l-o-w in Perl.
actually with filtering you don't pay for it, it is there or not (a bit like when you use dynamic linking and you switch some instrumenting lib for a non-instrumenting one -- so you can use a wrapper)
then with code like this
foo() if $foo;
why do you pay for a function call?
anyway your comment reminds of that perl command line flag (-P) that calls
the C preprocessor on your code...
maybe it could be useful for this can of debugging?! (chess notation)
cheers
--stephan p.s by the way for me true macros are lispish macros, the others do textual substitution (meaning not caring about syntax) and that can break easily like perl filters or cpp)