Wie bekomme ich die Ausführungszeit in der Rails-Konsole?

104

Ich möchte die Ausführungszeit Post.allund SELECT * FROM posts(oder einige andere Anweisungen) vergleichen. Wie kann ich die Ausführungszeit von erhalten Post.all?

Bohdan
quelle

Antworten:

239
timing = Benchmark.measure { Post.all }

Die verschiedenen Attribute des zurückgegebenen Objekts (Benchmark :: Tms) werden hier bereitgestellt .

Shadwell
quelle
5
Ich fand diesen Beitrag sehr nützlich: caseyscarborough.com/blog/2013/07/22/…
hernanvicente
@Bohdan Wäre es besser, eine weitere Antwort oder einen Kommentar in Bezug auf das Benchmark-ips-Juwel hinzuzufügen? Sie haben die Antwort dort ziemlich stark bearbeitet, wodurch sie erheblich geändert wird und die Angemessenheit der Stimmen bereits verringert wird.
Shadwell
@Bohdan Upvoted. Sie können die akzeptierte Antwort auch jederzeit ändern, wenn die neue Antwort angemessener geworden ist.
Shadwell
4

Mit Benchmark-ips- Juwel:

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
Bohdan
quelle
0

Hier ist meine Version, wie die Leistung in der Rails-Konsole mithilfe von gem automatisch gemessen wird: https://github.com/igorkasyanchuk/execution_time

Es werden ähnliche Informationen angezeigt, die Sie bereits bei Anfragen sehen.

Stichprobe:

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

Igor Kasyanchuk
quelle