问题标签 [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.

0 投票
0 回答
201 浏览

ruby - 阅读 ruby​​-prof 堆栈 html 输出 - 我很困惑

我使用 ruby​​-prof 生成堆栈调用图。它生成的非常好,但它只显示了方法内 10 个调用中的 3 个。根据时间,这 3 个调用在此方法中消耗了 100% 的时间。我假设没有显示其他调用,因为它们非常快,并且不会影响性能。我对吗?

0 投票
1 回答
44 浏览

ruby-on-rails - 我可以重复使用我的集成测试套件来分析 Rails 应用程序吗?

大多数关于 Rails 分析的帖子都推荐Ruby-Prof。要使用它Ruby-Prof,我需要为每个控制器操作编写至少一个新测试,然后手动比较结果以查看耗时最长且可能是优化的候选对象。

如果我已经确切地知道我正在关注什么请求,那就太好了。如果我首先尝试识别热点,这似乎不太好。鉴于我已经拥有一个庞大的集成测试套件,涵盖了我关心的所有应用程序功能,看来我真正想做的是:

  1. 运行整个测试套件并捕获每个控制器操作所花费的时间。(或模型方法,或我想要的任何粒度级别。)
  2. 打印两个列表,每个控制器操作中的最坏情况和平均情况时间。
  3. 对每个列表进行排序并开始调查运行时间最长的控制器操作,现在使用Ruby-prof或其他分析工具深入了解调用堆栈。最坏情况的时间将识别可能有问题的请求参数(即,在后端触发慢代码),而我在编写性能测试时不必考虑它们。

人们是否有某种原因不以这种方式使用集成测试套件,而不是基本上用第二个性能测试套件来复制它?我没有看到它建议。在我编写代码来做这样的事情之前(大概有一个before_actionin ApplicationController,是否已经有一个工具呢?

0 投票
1 回答
65 浏览

ruby - 为什么 ruby​​-prof 将“Kernel#`”列为资源消耗?

ruby-prof用来确定我在 Ruby 中构建的小型 2D 游戏引擎的 CPU 时间在哪里。除了主Kernel#`条目之外,这里的一切看起来都很正常。这里的 Ruby 文档建议这是一个用于获取在子 shell 中运行的命令的 STDOUT 的函数:

用于命令的 ruby​​ 文档的图像

关于为什么会发生这种情况的任何建议?我相当有信心我没有在我的代码中使用它——除非它以某种方式被间接调用。不知道从哪里开始寻找那种东西。

0 投票
1 回答
150 浏览

ruby - 使用带有参数的脚本运行 ruby​​-prof

我知道如何使用脚本启动ruby​​-prof :

但是如何使用带有参数的脚本运行 ruby​​-prof 呢?

0 投票
0 回答
136 浏览

ruby - 使用 ruby​​-prof 时,探查器输出中 `[global]#[no method]` 的来源是什么?

简短版:下面的 Ruby 分析器输出中 的来源是什么[global]#[no method],有什么办法可以消除它或减少它的时间?它占用了我的方法总执行时间的 50% 以上,这是我无法解释的分析器结果的唯一部分。

长版: 我正在使用ruby-profgem 来分析下面的 Ruby 代码。该方法find_median_sorted_arrays采用两个排序数组,并将它们的中值作为浮点数返回(因此得名)。这个问题来自一个编码挑战网站,我决定在我的解决方案上运行一个分析器,因为显然 80% 的提交的 Ruby 解决方案比我的运行得更快。

请注意,Ruby 版本是ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin15]

输出如下:

正如我在简短版本中提到的,[global]#[no method]它占用了我的方法总执行时间的 50% 以上,这是我无法解释的分析器结果的唯一部分。这是从哪里来的,有没有办法消除它或减少它的时间?