2012-02-01 16 views
6

Ứng dụng WPF của tôi có tính năng theo đó nó hiển thị một số lượng lớn hình ảnh trong nền trong khi cập nhật giao diện người dùng bất cứ khi nào một hình ảnh mới sẵn sàng.Application.Run là chức năng tiêu thụ CPU hàng đầu trong ứng dụng của tôi; những gì tôi có thể tối ưu hóa?

Lập cấu hình quá trình này cho thấy rằng Application.Run là hàm hoạt động nhiều nhất, ở mức 43%, với điểm "đắt thứ hai" được chia sẻ bởi ba API đồ họa, mỗi 6%.

Tôi có thể làm gì mà có thể mất quá nhiều thời gian để chi tiêu trong Application.Run? Có vẻ như cốt lõi của phương pháp này đang chạy điều phối chính cho ứng dụng của tôi, nhưng điều đó không giúp tôi hiểu được điều mà người điều phối đang làm rất nhiều. Tôi có thể lấy hồ sơ chi tiết hơn không?

Lưu ý: ý tôi là System.Windows.Application.Run.

Trả lời

4

Hóa ra rằng Visual Profiler (một phần của WPF Performance Suite) có thể cung cấp một break-down chi tiết hơn về việc sử dụng CPU:

CPU usage breakdown

Điều này cho thấy một nửa trong số đó sử dụng CPU không giải thích được là xuống chuỗi hiển thị (vì vậy có lẽ tôi nên cập nhật giao diện người dùng ít thường xuyên hơn) và phần lớn phần còn lại được sử dụng trong gọi lại Gọi lại của tôi (không thể tránh khỏi trong trường hợp của tôi).

+0

Phải. Hãy suy nghĩ về một chương trình như một người đi xe đạp xiếc mạnh mẽ đạp để cân bằng một đống nhào lộn cao, mỗi người nói cho anh ta con đường để đi. Anh ấy không phải là vấn đề, vấn đề là cao hơn. Bạn có thể nhận được cùng một thông tin bằng phương tiện của một vài * [stackshots] (http://stackoverflow.com/questions/375913/what-can-i-use-to-profile-c-code-in-linux/378024# 378024) * của các chủ đề, và nó sẽ cho bạn biết chính xác những dòng mã là thủ phạm. –

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