2009-03-26 34 views
9

Tôi đang làm việc trên một "tối ưu hóa" trên ứng dụng của mình và tôi đang cố gắng hiểu đầu ra mà đường ray (phiên bản 2.2.2) đưa ra ở cuối kết xuất.Tìm hiểu về Ruby on Rails hiển thị số lần

Đây là "cũ" cách:

Rendered user/_old_log (25.7ms) 
Completed in 466ms (View: 195, DB: 8) | 200 OK 

Và cách "mới":

Rendered user/_new_log (48.6ms) 
Completed in 337ms (View: 192, DB: 33) | 200 OK 

Các truy vấn này là giống hệt nhau, sự khác biệt là cách cũ là phân tích các file log trong khi cách mới là truy vấn bảng nhật ký cơ sở dữ liệu.

Tốc độ thực tế của trang không phải là vấn đề (người dùng hiểu rằng đây là yêu cầu chậm) ... nhưng tôi muốn trang phản hồi nhanh nhất có thể mặc dù đó là trang "chậm".

Vì vậy, câu hỏi của tôi là, con số biểu thị/có ý nghĩa gì? Nói cách khác, cách nào là phương pháp nhanh hơn và tại sao?

Trả lời

14

này:

Rendered user/_old_log (25.7ms) 

là thời gian để làm cho chỉ các _old_log mẫu một phần, và xuất phát từ một ActiveSupport::Notification bị xử lý bởi ActionView::LogSubscriber

này:

Completed 200 OK in 466ms 

Là trạng thái http được trả lại, cũng như tổng thời gian cho toàn bộ yêu cầu. Nó xuất phát từ ActionController::LogSubscriber.

Ngoài ra, lưu ý những mặt hàng trong dấu ngoặc ở cuối:

(Views: 124.6ms | ActiveRecord: 10.8ms) 

Đó là tổng số thời gian để render toàn bộ view (partials & tất cả mọi thứ) và tất cả các yêu cầu cơ sở dữ liệu, tương ứng, và đến từ ActionController::LogSubscriber là tốt.

-1

Cách mới của bạn dành ít thời gian hơn nhưng tốn nhiều thời gian hơn để hiển thị mẫu.

+0

Bạn có thể phân tích (hoặc chỉ cho tôi viết lên) về cách tự giải thích chúng? –

3

Câu trả lời của Jordan là chính xác. Để diễn giải, số đầu tiên là thời gian tải trang. Thứ hai là thời gian xem được tạo ra. Số cuối cùng là cơ sở dữ liệu của bạn mất bao lâu để xử lý tất cả các truy vấn bạn đã gửi tới nó.

Bạn cũng có thể ước tính mã Bộ điều khiển và Mã mô hình mất bao lâu bằng cách trừ hai số cuối cùng khỏi số đầu tiên, nhưng cách tốt hơn là sử dụng phương pháp Benchmark.measure (http://www.ruby-doc.org/stdlib/libdoc/benchmark/rdoc/classes/Benchmark.html).

Cách mới của bạn dường như đã được cải thiện vì mã trong Controller/Model hoàn tất nhanh hơn.

Các vấn đề liên quan