如何在 1.9.2 中分析 Ruby 代码?

Posted

技术标签:

【中文标题】如何在 1.9.2 中分析 Ruby 代码?【英文标题】:How can I profile Ruby code in 1.9.2? 【发布时间】:2011-03-08 21:50:37 【问题描述】:

在 1.9.2 中我可以使用什么来分析代码?我发现 ruby​​-prof 的所有版本都针对 1.9.2 存在段错误。

例如,当我添加时

gem "ruby-prof"

到我的 Rails 项目的 Gemfile 并运行

bundle
bundle exec ruby-prof config/environment.rb

我遇到了段错误。

镇上有没有新的分析宝石?有没有办法让 ruby​​-prof 玩得更好?

【问题讨论】:

当你没有gem "ruby-prof"但运行捆绑命令时它不会出现段错误? 好吧,如果捆绑包中没有ruby-prof,那么我不能bundle exec ruby-prof。但是bundle exec ruby config/environment.rb 没有段错误。 【参考方案1】:

不确定它是否有帮助,但我偶然发现了这一点,这可能会增加一点清晰度或引导您走不同的道路:http://www.devheads.net/development/ruby/core/segmentation-fault-when-using-ruby-prof-and-ruby-192.htm。您可能想根据该线程查看 wycats 的分叉:https://github.com/wycats/ruby-prof

另外,我自己还没有尝试过,它可能不是你正在寻找的东西,但是 Github 的 Aman 有一个用于 Ruby 的 google-perftools 端口: https://github.com/tmm1/perftools.rb

【讨论】:

【参考方案2】:

正如@chris.baglieri 所建议的,您可以使用perftools.rb gem 来分析Ruby 1.9 代码。

gem install perftools.rb

然后

require 'perftools'
PerfTools::CpuProfiler.start('profile_data') do
  # something cpu-intensive
end
`pprof.rb --text profile_data profile.txt`
`pprof.rb --pdf  profile_data profile.pdf`

【讨论】:

【参考方案3】:

您可以使用另一个流行的分析工具 - MethodProfiler

在目标类中查找慢方法非常方便。

【讨论】:

以上是关于如何在 1.9.2 中分析 Ruby 代码?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Ruby on Rails 中分析请求?

如何在 R 中分析和优化已经快速的代码

在 Ruby on Rails 应用程序/内存泄漏中分析延迟作业任务

如何在远程 tomcat 部署中分析 servlet?

如何在生产环境中分析请求?

如何在 MVC 框架中分析 SQL 查询?