【问题标题】:How to get execution time in rails console?如何在 Rails 控制台中获取执行时间?
【发布时间】:2011-04-01 03:18:03
【问题描述】:

我想比较Post.allSELECT * FROM posts 的执行时间(或其他一些语句)我怎样才能得到Post.all 的执行时间?

【问题讨论】:

    标签: sql ruby-on-rails time console


    【解决方案1】:
    timing = Benchmark.measure { Post.all }
    

    返回对象的各种属性(Benchmark::Tms)提供here

    【讨论】:

    • 我发现这篇文章非常有用:caseyscarborough.com/blog/2013/07/22/…
    • @Bohdan 参考 benchmark-ips gem 添加另一个答案或评论会更好吗?您已经对那里的答案进行了相当大的编辑,这大大改变了它,并且已经降低了对它的投票的适当性。
    • @Bohdan 赞成。如果新答案变得更合适,您也可以随时更改已接受的答案。
    【解决方案2】:

    benchmark-ipsgem:

    2.3.0 :001 > require 'benchmark/ips'
    => true 
    2.3.0 :002 > Benchmark.ips do |x|
    2.3.0 :003 >       x.report("add: ") { 1+2 }
    2.3.0 :004?>       x.report("div: ") { 1/2 }
    2.3.0 :005?>       x.report("iis: ") { 1/2.0 }
    2.3.0 :006?>   end
    Warming up --------------------------------------
               add:    280.299k i/100ms
               div:    278.189k i/100ms
               iis:    266.526k i/100ms
    Calculating -------------------------------------
               add:      11.381M (± 4.5%) i/s -     56.901M in   5.010669s
               div:       9.879M (± 4.6%) i/s -     49.518M in   5.024084s
               iis:       9.289M (± 4.2%) i/s -     46.376M in   5.001639s
    

    【讨论】:

      【解决方案3】:

      这是我关于如何使用 gem 在 Rails 控制台中自动测量性能的版本:https://github.com/igorkasyanchuk/execution_time

      它显示了您在请求期间已经看到的类似信息。

      示例:

      [METRICS] Completed in 908.3ms | Allocations: 2894 | ActiveRecord: 0.9ms (queries: 13)

      【讨论】:

        猜你喜欢
        • 2011-10-26
        • 2015-04-15
        • 2019-03-06
        • 2014-05-28
        • 2016-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多