I hope I'm not stealing AndyA's thunder, but this just went by on p5p and I'm excited!
From: Andy Armstrong
I now have a dtraced bleadperl which runs no slower than the clean version:
orig | dtrace | ratio ==================================== 2.51239896 | 2.47904992 | 0.98672622 2.50696611 | 2.46995783 | 0.98523782 2.52996778 | 2.47554016 | 0.97848683 2.50457382 | 2.47788405 | 0.98934359 2.50622296 | 2.46893001 | 0.98511986
In fact in those tests the dtraced version is running marginally faster. I'm putting that down to a happy code alignment or somesuch.
To be fair Sun did all the heavy lifting. They added a quick "is this probe enabled" test that can be used to wrap the instrumentation code. In fact I'm told they developed it specifically to make dtrace fast enough for Perl! And it is fast. The benchmark figures there are for 10,000,000 calls to an empty subroutine - so if there was any performance hit to entry/exit it'd show.
Right now I'm working on getting Configure to handle dtrace. It's slightly complicated by the fact that Sun's
Of course, we can instrument other things apart from subroutine entry / exit. Which other events in the interpreter are people interested in monitoring? We don't need to cover anything that causes a system call - because dtrace already does that.
Re:Sun did the hard sums
sigzero on 2008-01-08T12:46:11
Still! That is very cool Andy and thanks for enabling Perl to use it.