2011-08-16 27 views
6

Khi sử dụng mini profiler, điều này có nghĩa là mã sản xuất sẽ bị 'rải rác' bằng cách sử dụng các khối?Với mini-profiler

using (profiler.Step("Set page title")) 
{ 
    ViewBag.Title = "Home Page"; 
} 

Tôi đoán nếu đó là thử nghiệm 1 lần, tôi có thể xóa nó, nhưng thường bạn muốn giữ chúng trong codebase để định hình liên tục.

Trả lời

9

Đó thực sự là một ví dụ tồi - bạn sẽ không bình thường ghi lại điều gì đó tầm thường.

Cuối cùng, đó là tự chọn những gì bạn muốn cấu hình. Có một cái móc cho những thứ như ADO.NET, nhưng nếu bạn muốn nó để hồ sơ những điều bên ngoài này, có: bạn cần phải cung cấp cho nó một bàn tay.

Re "xả rác", tốt, đó là chủ quan. Và cách tiếp cận tốt nhất thường là giới hạn thiết bị cho các hoạt động mức rất cao và sau đó chỉ phóng to với các thao tác chi tiết hơn khi bạn thấy cần (do một điểm vấn đề đã xác định); ví dụ, bạn có thể có:

... 
using(profiler.Step("Refresh customer")) 
{ 
    // ... 
} 
... 

và sau đó chỉ khi bạn thấy rằng tham 1800ms phóng to:

... 
using(profiler.Step("Refresh customer")) 
{ 
    using(profiler.Step("Query LDAP")) 
    { ... } 
    using(profiler.Step("Query primary customer DB")) 
    { ... } 
    using(profiler.Step("Query aux db")) 
    { ... } 
    using(profiler.Step("Print, scan, and OCR")) 
    { ... } 
} 
... 

Ngoài ra còn có một phương pháp .Inline(...) cho các lệnh cá nhân.

Hay không bạn nghĩ rằng đây là "xả rác":

  • nó nhấn mạnh performance is a feature (và thực sự, thường là một yêu cầu) - đó là OK để có mã để hỗ trợ các tính năng của bạn! Trên thực tế, nó là một hình thức của bằng chứng rằng bạn có coi (và đo) thực hiện một/mảnh mới thay đổi mã
  • nó là hoàn toàn theo ngữ cảnh như thế nào hột bạn thực hiện nó
  • nó do đó cung cấp một mức độ ý nghĩa của chi tiết cho người dùng - mà không có số lượng dữ liệu không đáng kể trong nhật ký và không có bản chất xâm lấn hiệu quả của hầu hết việc ghi nhật ký
+0

cảm ơn, btw, làm cách nào bạn thực hiện thả xuống trên mỗi trang dẫn đến kết quả? đã móc vào profiler bằng cách nào đó? tức là lưu từng đăng nhập vào bộ nhớ cache request.items? – codecompleting

+0

@codecompleting có API có thể cắm được để cung cấp cả lưu trữ ngắn hạn và dài hạn. Nó sử dụng một cửa hàng ASP.NET trong bộ nhớ theo mặc định, IIRC - nhưng nội bộ chúng ta sử dụng SQL-Server cho lâu dài (thật dễ dàng để viết một plugin cho việc này). Đó có phải là câu hỏi không? –

+0

Tôi muốn làm một cái gì đó như: http://community.mediabrowser.tv/uploads/site_1/2314/profiler.png tò mò về cách bạn tổng hợp tất cả các truy vấn cho một yêu cầu nhất định. sử dụng request.items? – codecompleting

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