Railsコンソールで実行時間を取得する方法は?


104

実行時間Post.allSELECT * FROM posts(または他のステートメント)を比較したいのですが、実行時間を取得するにはどうすればよいPost.allですか?

回答:


239
timing = Benchmark.measure { Post.all }

返されるオブジェクト(Benchmark :: Tms)のさまざまな属性をここに示します


5
私は非常に便利な、この記事を見つけた:caseyscarborough.com/blog/2013/07/22/...
hernanvicente

@Bohdan benchmark-ips gemを参照して、別の回答やコメントを追加した方がよいでしょうか?回答をかなり大きく編集しましたが、回答が大幅に変更され、投票の適切性はすでに低下しています。
Shadwell 2017年

@ボーダン賛成。新しい答えがより適切になった場合は、受け入れられた答えもいつでも変更できます。
Shadwell 2017年

4

ベンチマーク-IPSの宝石:

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.