Comment obtenir le temps d'exécution dans la console rails?

104

Je veux comparer l'heure d'exécution Post.allet SELECT * FROM posts(ou d'autres instructions) Comment puis-je obtenir l'heure d'exécution Post.all?

Bohdan
la source

Réponses:

239
timing = Benchmark.measure { Post.all }

Les différents attributs de l'objet retourné (Benchmark :: Tms) sont fournis ici .

Shadwell
la source
5
J'ai trouvé ce post très utile: caseyscarborough.com/blog/2013/07/22/…
hernanvicente
@Bohdan Serait-il préférable d'ajouter une autre réponse ou un commentaire en référence à la gemme benchmark-ips? Vous avez apporté une modification assez importante à la réponse, ce qui la modifie considérablement et réduit plutôt l'opportunité des votes déjà.
Shadwell
@Bohdan a voté pour. Vous pouvez toujours modifier la réponse acceptée aussi si la nouvelle réponse est devenue plus appropriée.
Shadwell
4

Avec le bijou benchmark-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
Bohdan
la source
0

Voici ma version de la façon de mesurer automatiquement les performances dans la console de rails à l'aide de gem: https://github.com/igorkasyanchuk/execution_time

Il affiche des informations similaires que vous voyez déjà lors des demandes.

Échantillon:

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

Igor Kasyanchuk
la source