【问题标题】:Rails benchmark the filter chain?Rails 对过滤器链进行基准测试?
【发布时间】:2011-01-27 16:59:35
【问题描述】:

我正在对我的 Rails (2.3.5) 应用程序进行一些优化,但似乎找不到对过滤器链进行基准测试的优雅方法。我正在使用以下内容测试该网站:

ab -n 200 -c 3 -i -k http://localtestingserver:80/test

/test 设置时控制器中没有任何内容,页面中也没有任何内容,因此它只是加载我们的默认过滤器链并渲染布局。我每个请求平均得到 86 毫秒,很好。

当我禁用过滤器(skip_filter filter_chain)时,它下降到 37 毫秒,而没有布局(渲染:布局 => 假)它下降到 16 毫秒。有没有一种方法可以进行基准测试,也许是 Benchmark.realtime,每个函数都加载到过滤器链中,在控制器被调用之前(或者实际上是之后)?我可以输出一个请求中调用的所有过滤器的列表吗?

谢谢,

编辑

我正在使用 Hodel3000 记录器和 Oink,因此根据请求获取输出,例如:

Jan 27 17:56:55 testing rails[19611]: Memory usage: 98748 | PID: 19611
Jan 27 17:56:55 testing rails[19611]: Instantiation Breakdown: Total: 2 | Room: 1 | User: 1
Jan 27 17:56:55 testing rails[19611]: Completed in 240ms (View: 28, DB: 0) | 200 OK [/test]

我只是想更好地理解和分析在调用控制器之前发生的事情 - 我可以很好地分析控制器本身。就像上述请求中额外的 212 毫秒一样。显然,我可以将代码放入我自己的每个 before_filters 中,但希望有一种方法可以一次性包装每个过滤器(例如来自包含的 gem 的过滤器等)。

【问题讨论】:

    标签: ruby-on-rails ruby benchmarking before-filter


    【解决方案1】:

    Performance Testing Rails Applications 指南看起来是个不错的起点。

    【讨论】:

    • 谢谢,我在那里做了很多事情。与其说是对不同的控制器/请求进行分析,不如说是在每个请求之前发生了什么。我会澄清上面的问题。
    • 链接断开。 3.2.14版本在这里:guides.rubyonrails.org/v3.2.14/performance_testing.html
    猜你喜欢
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    相关资源
    最近更新 更多