Ada*_*ers 6 ruby performance profiling ruby-prof
我是Ruby分析的新手,它似乎ruby-prof是一个受欢迎的选择.我刚刚安装了gem并调用了我的程序:
ruby-prof ./my-prog.rb
Run Code Online (Sandbox Code Playgroud)
但是,输出非常冗长,因为包含了所有Ruby核心和标准库方法以及其他gem的数据分析.例如,前三行是:
8.79 0.011 0.010 0.000 0.001 3343 *String#%
7.28 0.078 0.009 0.000 0.069 2068 *Array#each
4.93 0.038 0.006 0.000 0.032 1098 *Array#map
Run Code Online (Sandbox Code Playgroud)
这对我来说并不是一个非常有用的信息,因为我已经知道我的程序经常处理字符串和数组,并且可能这些类已经对它们进行了优化.我只关心热点我的代码.
我尝试了一些其他的打印机模式,例如-p graph_html和-p call_stack,但他们都有同样的问题.
我看到它ruby-prof支持一些方法消除和简化:
-x, --exclude regexp exclude methods by regexp (see method elimination)
-X, --exclude-file file exclude methods by regexp listed in file (see method elimination)
--exclude-common-cycles make common iterators like Integer#times appear inlined
--exclude-common-callbacks make common callbacks invocations like Integer#times appear
Run Code Online (Sandbox Code Playgroud)
但似乎没有要任何明显的方式得到我真正想要的,这是我的代码分析数据只,即从红宝石核心/ STDLIB经过内部代码的时间,而且随着时间的流逝里其他宝石只正在清点我码.
有一次,我可以看到我的代码有一个方法foo是一个性能瓶颈,由于被调用数千次,表现不好,然后和只有做我想看看我的代码和核心/库代码调用中之间经过时间的故障那种特殊的方法.
我不明白为什么这不是一个标准功能,因为我希望每个人都想做的事情:首先描述你自己的代码,然后一旦你用完了优化的东西,可能会开始优化宝石你使用甚至可能是Ruby core/stdlib.我错过了什么?