如何在 Rails 控制台中获得执行时间?

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

43963 次浏览
timing = Benchmark.measure { Post.all }

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

基准点宝石:

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

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

它显示了在请求过程中已经看到的类似信息。

样本:

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