问题标签 [ruby-prof]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - rails ruby-prof 和基准测试
我正在运行 Rails 2.2.2。我已经阅读了一些关于 ruby-prof 和分析 rails 应用程序的文章。我对事情的真正运作方式感到困惑。
我最初使用本教程
http://snippets.aktagon.com/snippets/255-How-to-profile-your-Rails-and-Ruby-applications-with-ruby-prof
来分析我的应用程序,它可以工作。这涉及编写您自己的配置文件环境并运行> RAILS_ENV=profiling ./script/performance/request -n 100 profiling/homepage.rb
所以这是我的困惑。不知何故,这会运行 ruby-prof 并打开所有统计信息等,但我看不到任何实际调用 ruby-prof 的地方。
所以我进一步阅读,似乎 2.2.2 内置了基准测试/分析。所以我在性能部分编写了一个测试文件,如下所示
并运行
耙式测试:配置文件
这是否等同于我上面所做的,但刚才它已集成到整个 rails 框架中?
我的下一个问题是这个。原始脚本输出一个平面文件和 html 文件,但我不知道如何自动获取树文件以使用 KCacheGrind 或在我的情况下为 MacCallGrind 打开。我可以在脚本调用中添加格式吗?
编辑:通过 rake test 运行脚本似乎实际上产生了一个树文件,太好了。然而,Mac CallGrind 在尝试解析它时似乎挂起。有人知道查看这些树文件的其他工具吗?
ruby - 分析 ruby 应用程序时是否可以忽略不相关的方法?
在使用 ruby-prof 时,以 graph-html 模式打印出来,一种方法的报告说(有一些截图)
显然,这不是Hash#each
需要很长时间,而是yield
Hash#each 中的块。
查看 Hash#each 的报告令人困惑,因为它报告了所有使用 Hash#each 的代码调用的代码。
是否可以要求 ruby-prof 将有关已生成代码的信息放入ClassName#method_name
's 报告中?
使用min_percent
或切换到平面配置文件似乎没有帮助。
ruby-on-rails - 为 Rails 项目的一部分配置内存性能
我想测试我的 rails-project 的一个重要库类的配置文件使用情况。它使用 ActiveRecord,所以我需要所有 rails 依赖项来分析它。
据我所知,我需要一个修补过的 ruby (rubygc),以便脚本/配置文件和脚本/基准可以跟踪内存使用情况。我尝试按照这个官方指南来修补 ruby 1.8.6 (p399) 和 1.8.7 (p248) 的源代码,但都失败并显示以下消息:
我也尝试使用 ruby-prof,但我总是收到错误“未初始化的常量 RubyProf::Test”。我不知道如何使用 gem "memory" 并且 "memprof" 和 "bleak_house" 都无法成功安装。
如果我得到一个修补的红宝石运行,我应该没问题。但是任何其他分析库类内存的可能性都是受欢迎的。感谢您的帮助!
ruby - 低开销的 Ruby 分析?
我有一个 Ruby 程序需要大约 4 分钟才能完成任务,我想把它缩短到 1 分钟以下。
我从 gem 中尝试了 ruby-prof,但启用它会将运行时间增加到约 30 分钟,甚至似乎并没有特别好地保持单调性(一些更改可靠地提高了带分析器的性能,并且可靠地降低了不带分析器的性能)。这项任务也不能真正分解成可以有意义地独立分析的部分。
当前以最低开销分析 Ruby 代码的最佳方法是什么?
我使用 OSX,但如果出于任何原因分析器需要另一个操作系统,我可能会重新启动。
编辑:perftools.rb
开销要低得多,但说实话,结果看起来相当可疑,远远超出了任何合理的采样错误 - 至少它必须与 GC 或 i/o 缓冲或类似的东西混淆,导致很多愚蠢的错误归因。它仍然胜过 ruby-prof。
如果有人知道比这更好的事情,我会保持这个问题。
ruby-on-rails - rails 性能测试失败
简单的性能测试,我已经安装了 ruby-prof 并且没有其他 gem 丢失,
rake test:profile 返回以下错误。
测试很简单。
environment.rb 中的第 18 行很简单。
这是自定义记录器http://pastie.org/1224832 为什么在这里咳嗽?
这是轨道 2.3.5 上的 REE 1.8.7
ruby - 分析 Ruby 代码
除了 ruby-prof 和核心 Benchmark 类之外,您还使用什么来分析您的 Ruby 代码?特别是,您如何找到代码中的瓶颈?几乎感觉就像我需要使用自己的小工具来弄清楚我的代码中所有的时间都花在了哪里。
我意识到 ruby-prof 提供了这个,但坦率地说,输出非常令人困惑,并且不容易找出你自己代码的哪些实际块是问题的根源(它告诉你哪些方法调用花费了最多时间尽管)。所以我并没有真正从中得到我想要的那么多,也没有真正能够利用它。
也许我做错了?有替代品吗?谷歌搜索没有为我带来任何东西。
rake - 如何配置 Rake 任务?
我需要分析 rake 任务。因为我是菜鸟,我只知道如何分析 .rb 代码,如下所示:ruby -Ilib -S ruby-prof -p graph_html profile.rb > profile.html
但是我如何分析一个特定的 Rake 任务呢?
ruby - 如何在 1.9.2 中分析 Ruby 代码?
我可以使用什么来分析 1.9.2 中的代码?我发现 ruby-prof 的所有版本都针对 1.9.2 存在段错误。
例如,当我添加
到我的 Rails 项目的 Gemfile 并运行
我得到一个段错误。
镇上有没有新的分析宝石?有没有办法让 ruby-prof 玩得更好?
ruby - 了解 ruby-prof 输出
我在我的一个程序上运行了 ruby-profiler。我试图弄清楚每个字段的含义。我猜一切都是 CPU 时间(而不是挂钟时间),这太棒了。我想了解“---”代表什么。那里是否有某种堆栈信息。调用 a/b 是什么意思?
ruby - 互斥睡眠占用大量 CPU
我用 ruby-prof 分析了我的基于事件机器的应用程序,发现以下有趣的东西:
我认为 ruby-prof 只计算 CPU 滴答声,因此我无法弄清楚为什么互斥锁睡眠可能需要 CPU 时间。我假设它在内核级别上休眠,不计入光纤时间。有任何想法吗?更好的是,我希望 Mutex#sleep 将控制权释放给事件机器,以便它可以做其他事情。