Now I've tested out Method::Signatures::Simple. It's powered by Devel::Declare and doesn't seem to incur a any runtime penalty. However, since it needs to do some work when the subroutines are compiled, there's a 3-4% compilation hit for my tests:
But on runtime there's no hit at all:
Here's what I needed to do to convert Hailo to it. Unfortunately using it breaks interaction with Devel::NYTProf. When I generate profiling output with
nytprofhtml what were previously links to my subroutines aren't links at all.
That's a big price to pay for just turning this:
So unless I can figure out a workaround for that I won't be merging that branch.