2012-03-05 20 views
5

Khi sử dụng dotTrace, tôi phải chọn chế độ lược tả và phương pháp đo thời gian. Profiling modes là:dotTrace - Tôi nên sử dụng cài đặt tiểu sử nào cho ứng dụng dành cho máy tính để bàn của mình?

  • Tracing
  • Line-by-line
  • Lấy mẫu

time measurement methods là:

  • thời gian tường thời gian (hiệu suất truy cập)
  • Chủ đề
  • Thời gian tường (hướng dẫn CPU)

Việc dò vết và từng dòng không thể sử dụng phép đo thời gian luồng. Nhưng điều đó vẫn để lại cho tôi bảy sự kết hợp khác nhau để thử. Bây giờ tôi đã đọc các trang trợ giúp dotTrace trên những trang này nhiều hơn một chục lần, và tôi vẫn không hiểu biết nhiều hơn là tôi bắt đầu tìm kiếm cái nào để chọn.

Tôi đang làm việc trên ứng dụng WPF đọc tài liệu Word, trích xuất tất cả các đoạn văn và kiểu, sau đó lặp lại nội dung được trích xuất đó để chọn ra các phần tài liệu. Tôi đang cố gắng tối ưu hóa quá trình này. (Hiện tại phải mất hơn một giờ để hoàn thành, vì vậy tôi đang cố gắng chỉnh sửa nó trong một khoảng thời gian nhất định thay vì cho đến khi nó kết thúc.)

Loại hồ sơ và thời gian nào sẽ mang lại kết quả tốt nhất? Hoặc nếu câu trả lời là "Nó phụ thuộc", thì nó phụ thuộc vào điều gì? Ưu điểm và nhược điểm của phương thức đo lường thời gian hoặc phương pháp đo thời gian nhất định là gì?

+1

Ngoài ra, khi nào nên chọn "Độ chính xác cao"? Tại sao bạn * không * chọn cái này? – usr

Trả lời

6

loại Profiling:

  • Lấy mẫu: nhanh nhất nhưng ít nhất chính xác hồ sơ loại, overhead profiler tối thiểu. Về cơ bản tương đương với tạm dừng chương trình nhiều lần một giây và xem stacktrace; do đó số lượng cuộc gọi trên mỗi phương thức là gần đúng. Vẫn hữu ích cho việc xác định các tắc nghẽn hiệu suất ở cấp phương thức.

    Ảnh chụp nhanh được chụp ở chế độ lấy mẫu chiếm không gian ít hơn trên đĩa (tôi muốn nói thêm 5-6 khoảng trống.) Sử dụng để đánh giá ban đầu hoặc khi lập hồ sơ ứng dụng dài hạn (có vẻ như trường hợp của bạn.)

  • Truy tìm: Ghi lại thời lượng thực hiện cho từng phương pháp. Ứng dụng dưới cấu hình chạy chậm hơn nhưng bù lại, dotTrace hiển thị số lượng cuộc gọi chính xác của từng chức năng và thông tin thời gian chức năng chính xác hơn. Điều này là tốt cho việc đi sâu vào chi tiết của một vấn đề ở cấp phương pháp.

  • Line-by-line: Lập cấu hình chương trình theo từng dòng. Hog tài nguyên lớn nhất nhưng hầu hết các kết quả lược tả chi tiết. Làm chậm chương trình cách xuống. Chiến thuật ưa thích ở đây là sử dụng cấu hình ban đầu khác, và sau đó chọn các chức năng thủ công để lập hồ sơ theo từng dòng.


Đối với các loại đồng hồ, tôi nghĩ rằng họ được mô tả khá tốt trong Getting started with dotTrace Performance bởi Hadi Hariri tuyệt vời.

thời gian Wall (CPU Instruction): Đây là cách đơn giản nhất và nhanh nhất để đo thời gian tường (có nghĩa là, các thời gian chúng ta quan sát trên đồng hồ treo tường). Tuy nhiên, trên một số bộ vi xử lý đa lõi cũ hơn, điều này có thể tạo ra kết quả không chính xác do bộ đếm thời gian lõi không được đồng bộ hóa. Nếu đúng như vậy, bạn nên sử dụng để sử dụng Bộ đếm hiệu suất.

Thời gian tường (Bộ đếm hiệu suất): Bộ đếm hiệu suất là một phần của API Windows và cho phép lấy mẫu thời gian theo cách độc lập với phần cứng. Tuy nhiên, là một cuộc gọi API, mọi biện pháp đều mất thời gian đáng kể và do đó có tác động đến ứng dụng được lược tả.

Thời gian chủ đề: Trong một chủ đề đa luồng đồng thời, đóng góp vào thời gian tường của nhau. Để tránh nhiễu như vậy, chúng tôi có thể sử dụng đồng hồ đo thời gian để thực hiện cuộc gọi API hệ thống để có được khoảng thời gian do trình lên lịch hệ điều hành đưa ra cho chuỗi. Nhược điểm là lấy thời gian thread mẫu chậm hơn nhiều so với việc sử dụng bộ đếm CPU và độ chính xác cũng bị giới hạn bởi kích thước của lượng tử được sử dụng bởi bộ lập lịch trình (thường là 10ms). Chế độ này chỉ được hỗ trợ khi Tiểu sử Loại được đặt thành Lấy mẫu

Tuy nhiên, chúng không khác biệt quá nhiều.


Tôi không phải là một phù thủy trong profiling bản thân mình nhưng trong trường hợp của bạn tôi muốn bắt đầu với lấy mẫu để có được một danh sách các chức năng mà phải mất ridiculously dài để thực hiện, và sau đó tôi muốn đánh dấu chúng cho line-by sơ lược.

+0

Tôi đã cải thiện câu hỏi này để tôi có thể sử dụng nó như là một tham chiếu cho tương lai, tôi luôn luôn có được những thời gian của Tường hỗn hợp. –

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