Hạn ngạch sử dụng CPU cho Tác vụ nền trong WinRT là 1 giây hoặc 2 giây nếu chúng ở trên màn hình khóa. Câu hỏi đặt ra là làm cách nào để đo chính xác mức sử dụng CPU này - tôi muốn biết liệu mã của tôi có chạy dưới hạn ngạch 2 giây này hay không? Tôi đoán chỉ sử dụng DateTime.Now trước và sau khi thực hiện nhiệm vụ không phải là cách tiếp cận đúng.
Bài viết MSDN về Nhiệm vụ Bối cảnh:
Supporting your app with background tasksLàm thế nào để đo lường chính xác việc sử dụng CPU trong các tác vụ nền?
Trả lời
tôi đã cùng một vấn đề.
Nếu bạn bắt đầu Task Manager
, dưới tab App history
, bạn có thể xem số liệu thống kê về mức sử dụng tài nguyên của các ứng dụng khác nhau. Một trong số đó là CPU Time
. Vấn đề là nó không phải là trung bình, nhưng nó chỉ hiển thị tổng thời gian sử dụng CPU.
Nếu bạn cần thời gian trung bình, mẹo là giữ số trong ứng dụng của bạn cho bất kỳ hoạt động nền nào và chia toàn bộ thời gian cho điều đó, vì vậy bạn sẽ nhận được thời gian trung bình.
Tôi đoán đây là cách tốt nhất mà chúng tôi có thể thực hiện ngay bây giờ để đo mức sử dụng CPU, cảm ơn. –
Tôi đã sử dụng GetProcessTimes WinAPI.
Các tài liệu cho biết “máy tính để bàn chỉ ứng dụng”, nhưng về mặt kỹ thuật, nó hiện diện ngay cả trên điện thoại:
[DllImport("KERNELBASE.DLL", SetLastError = true)]
static extern IntPtr GetCurrentProcess();
// NB! Undocumented API, won't pass marketplace checks.
[DllImport("KERNELBASE.DLL", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetProcessTimes(IntPtr hProcess, out long lpCreationTime, out long lpExitTime, out long lpKernelTime, out long lpUserTime);
Trên PC thay thế KERNELBASE.DLL với Kernel32.dll.
Điều đó sẽ không vượt qua chứng nhận thị trường, nhưng sẽ là đủ để bạn chuẩn cho tác vụ nền của mình.
Gọi GetProcessTimes khi bắt đầu, tính long startTime = KernelTime + UserTime
. Gọi GetProcessTimes khi hoàn tất, tính (KernelTime + UserTime) - startTime
và bạn nhận dữ liệu của mình. Đơn vị đo lường là 100ns ve, giống như trong TimeSpan.
- 1. Làm thế nào để đo lường sự tranh chấp khóa?
- 2. Làm thế nào để đo lường sự tranh chấp mutex?
- 3. Sử dụng VS2010 Profiler để đo lường bộ nhớ
- 4. LayoutParams sử dụng đơn vị đo lường nào?
- 5. Làm cách nào để sử dụng bộ lọc để đo lường hiệu suất?
- 6. Sử dụng các loại C# để thể hiện các đơn vị đo lường
- 7. Rails 3 ứng dụng, làm thế nào để đo lường sự ổn định dưới tải cao
- 8. Làm thế nào để bạn đo lường giá trị SQL Fill Factor
- 9. Chính xác thời gian CPU trong trình quản lý tác vụ là gì?
- 10. Java Đo lường hiệu suất
- 11. Sử dụng tệp ứng dụng resw từ tác vụ nền
- 12. Làm cách nào để xác định thành viên mở rộng trên đơn vị đo lường F #?
- 13. Làm thế nào để đo lường đáng tin cậy bộ nhớ có sẵn trong Linux?
- 14. Làm cách nào để đo CPU, bộ nhớ và mức sử dụng đĩa trong khi xây dựng?
- 15. Làm thế nào để sử dụng chính xác SetWindowsHookEx & CallNextHookEx
- 16. tác vụ nền java
- 17. Đơn vị đo lường được thể hiện như thế nào?
- 18. Hủy tác vụ nền
- 19. Đo lường hiệu suất PHP
- 20. Làm thế nào để sử dụng tăng :: error_info chính xác?
- 21. Thực hiện tác vụ nền trong Javascript
- 22. Đơn vị đo lường nào được sử dụng để xác định độ chính xác của GPS với API địa lý HTML5?
- 23. Làm thế nào để đo lường các kích thước của các phần tử trong mã nguồn HTML bằng cách sử dụng lập trình?
- 24. Đo lường trên trang web
- 25. Đơn vị đo lường API trong Java?
- 26. Làm cách nào để dừng Sass thêm dấu cách trước các đơn vị đo lường?
- 27. Đo lường hiệu suất của khách hàng
- 28. Tôi có thể đo lường các lỗi dự đoán nhánh trên CPU Intel Core hiện đại không?
- 29. Thống kê quá trình đo lường trong Linux
- 30. Phạm vi đo lường tài liệu đo lường với Javadoc và Ant
Tôi cũng đoán rằng i5 có thể chạy nhiều mã hơn bộ xử lý dựa trên ARM ... Tôi có cần bộ xử lý chậm nhất có thể thử nghiệm nếu ứng dụng của tôi không mất hơn 2 giây không? – GameScripting
Điểm tốt, nếu đúng, chúng ta có ít năng lực tính toán hơn cho công việc nền của chúng tôi trên máy tính bảng ARM cấp thấp hơn so với các máy tính để bàn có lõi của Core-i7. –
Nhân viên web có giống nhiệm vụ nền không? Tôi muốn tìm nạp và lưu trữ hình ảnh, nhưng 2 giây dường như không đủ thời gian xử lý (đặc biệt là vì tôi muốn cắt và lưu chúng). – kamranicus