While using ruby-prof, printed out in graph-html mode, the report for one method says (with some snipping)
%Total %Self Total Self Wait Child Calls Name Line
52.85% 0.00% 51.22 0.00 0.00 51.22 1 ClassName#method_name 42
51.22 0.00 0.00 51.22 1/3 Hash#each 4200
Obviously, it's not Hash#each
that's taking a long time, but the yield
block within Hash#each.
Looking at the report for Hash#each is confusing because it reports on all of the code called by anything that uses Hash#each.
Is it possible to ask ruby-prof to put the information on yielded code in ClassName#method_name
's report?
Using min_percent
or switching to a flat profile doesn't seem to help.
If you don't mind low-tech, maybe you want to consider this. All you need is to be able to pause the debugger. Guaranteed, it will quickly find anything you can find any other way, and not show you any irrelevant code.
Version 0.9.0 of ruby-prof allows method elimination. For example, to eliminate
Integer#times
, useso that
will indicate the relationship between
method_a
andmethod_b
directly.