2011-06-13 47 views
0

我尝试了ruby-prof,并将其与一些自包含的模块进行了对比。模块的核心是3个类,可能还有3个其他的辅助类被使用。所以不应该有大量的需求和包括大量的开销。在安装了相当数量的宝石的大型应用中,这是否正常?为什么Kernel#需要占用我应用程序资源的这么大一部分?

18.06  7.67  1.99  0.00  7.66  1366 Kernel#require 
    5.80  1.21  0.64  0.00  0.83 18704 Array#map 
    5.73  10.21  0.63  0.00 10.09 38133 Array#each 
    5.17  1.13  0.57  0.00  0.56 21796 Array#include? 
    4.40  0.49  0.49  0.00  0.00 345434 Symbol#to_s 
    3.78  0.42  0.42  0.00  0.00 446478 String#== 
+0

相当数量的宝石?你能详细说明吗?似乎这可能会占用所需的时间。 – Ryanmt 2011-06-13 22:29:11

回答

1

ruby-profdocumentation

要分析Rails应用程序它是 至关重要使用生产像 设置(缓存类,高速缓存视图 查找等)来运行它。否则,Rail的 依赖加载代码将在应用 本身(我们的测试显示Rails 依赖加载导致大约6x 减速)花费的任何时间将压倒 。

您是否正在使用生产设置运行此操作?如果您没有使用缓存数据,而是每次都必须从磁盘读取文件/类,我可以理解为什么您看到您的系统在Kernel#require中花费了太多时间。

0

我跑红宝石教授在类似情况下,根据你的描述,除了矿山只需要两种宝石,我不会考虑有资格作为“相当数量”。话虽如此,我还是花了7%的时间用Kernel#gem_original_require类的10%。

我想你所看到的是非常典型的,因为它似乎与我的情况相当。

相关问题