2010-02-03 39 views
13

Tôi có quy trình dịch vụ và tôi muốn sử dụng bộ đếm hiệu suất để xuất bản thời gian trung bình cần để hoàn thành các tác vụ. Tôi đang sử dụng bộ đếm AverageTimer32 để thực hiện việc này.Tính trung bình với Bộ đếm hiệu suất

Nó gần như hoạt động theo cách tôi muốn, nhưng không hoàn toàn: Khi tôi tăng bộ đếm, nó sẽ va chạm với giá trị mà tôi mong đợi (xem trong màn hình hiệu suất), nhưng sau đó giảm xuống dưới 0. Vì vậy, truy cập là số không, tôi chạy một nhiệm vụ, nhiệm vụ hoàn thành, truy cập nhanh chóng bumps lên (với giá trị chính xác), nhưng sau đó nó gần như ngay lập tức rơi trở lại số không.

Tôi đang sử dụng bộ đếm AverageTimer32 với một AverageBase làm mẫu số. Tôi tăng AverageBase 1 mỗi khi tôi bắt đầu một nhiệm vụ, và sau đó tôi tăng AverageTimer32 bởi số lượng bọ ve để hoàn thành mỗi khi tôi hoàn thành nhiệm vụ. Bất cứ ai có thể cho tôi một sự thúc đẩy?

Trả lời

16

Nó chỉ ra rằng lý do mà tôi không thể làm những gì tôi muốn là không có loại truy cập hiệu suất nào cung cấp để tự động tính toán mức trung bình đang chạy. (các bộ đếm "trung bình", tính trung bình dựa trên thời điểm đó, như "byte trên giây").

Tôi muốn có mức trung bình đang chạy. Vì vậy, tôi đã sử dụng loại truy cập hiệu suất RawFraction.

Có một vấn đề với phương pháp đó: Công thức chia kết quả cho 100 để tạo ra tỷ lệ phần trăm và tôi muốn có số nguyên (hoạt động trung bình được hoàn thành mỗi giây).

Vì vậy, tôi đã tăng mẫu số của phân số lên 100 cho mỗi hoạt động 1 (bù đắp phần trăm tính toán).

Kết quả của tôi: Bây giờ tôi có thể hiển thị mất bao lâu để dịch vụ của tôi hoàn thành một tác vụ. Nếu dịch vụ của tôi không bận, mức trung bình vẫn không thay đổi để bạn có thể thấy xu hướng dài hạn của hiệu suất dịch vụ của tôi.

+0

Tôi đã có cùng một vấn đề, tôi đã cố gắng sử dụng AverageCount64, AverageTime32 nhưng vô ích. Cảm ơn bạn đã trả lời câu hỏi của riêng bạn và cung cấp giải thích. –

+0

+1 Điều này cũng làm việc cho tôi. Xuất sắc! –

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