Làm thế nào để có được thời gian thực thi trong bảng điều khiển rails?


104

Tôi muốn so sánh thời gian thực hiện Post.allvà SELECT * FROM posts(hoặc một số câu lệnh khác) Làm thế nào tôi có thể nhận được thời gian thực hiện Post.all?

Câu trả lời:


239
timing = Benchmark.measure { Post.all }

Các thuộc tính khác nhau của đối tượng được trả về (Điểm chuẩn :: Tms) được cung cấp tại đây .


5
Tôi thấy bài đăng này rất hữu ích: caseyscarborough.com/blog/2013/07/22/…
— hernanvicente

@Bohdan Sẽ tốt hơn nếu bạn thêm một câu trả lời hoặc nhận xét khác có tham chiếu đến viên ngọc benchmark-ips? Bạn đã thực hiện một chỉnh sửa khá lớn đối với câu trả lời ở đó làm thay đổi nó đáng kể và thay vào đó làm giảm tính thích hợp của các phiếu bầu trên đó.
— Shadwell

@Bohdan Đã ủng hộ. Bạn luôn có thể thay đổi câu trả lời đã chấp nhận nếu câu trả lời mới trở nên phù hợp hơn.
— Shadwell

4

Với đá quý 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

0

Đây là phiên bản của tôi về cách đo hiệu suất tự động trong bảng điều khiển rails bằng gem: https://github.com/igorkasyanchuk/execution_time

Nó hiển thị thông tin tương tự mà bạn đã thấy trong các yêu cầu.

Mẫu vật:

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.