cuốn sách gpt4 ai đã làm

c++ - đồng hồ() so với getsystemtime()

In lại Tác giả: Walker 123 Thời gian cập nhật: 27-11-2023 22:29:35 26 4
mua khóa gpt4 Nike

Tôi đã phát triển một lớp dành cho điện toán đa luồng và một luồng chỉ sử dụng một phiên bản của lớp này. Tôi cũng muốn đo thời lượng tính toán bằng cách lặp qua vùng chứa của lớp này từ một luồng khác. Ứng dụng này là win32. Vấn đề là tôi đã đọc được rằng QueryPerformanceCounter rất hữu ích khi so sánh các phép đo trên một chuỗi đơn lẻ. Vì vấn đề của tôi là không thể sử dụng nó nên tôi đã nghĩ đến clock() hoặc GetSystemTime(). Đáng buồn thay, "độ phân giải" của cả hai phương pháp là mili giây (vì CLOCKS_PER_SEC là 1000 trên win32). Tôi nên sử dụng hoặc khái quát hóa cách tiếp cận nào, có lựa chọn nào tốt hơn cho tôi không? Thường thì tôi phải đo bên ngoài sợi công nhân. Đây là một số mã làm ví dụ.

GetCounter() dài chưa được đánh dấu
{
HỆ THỐNG THỜI GIAN ww;
GetSystemTime(&ww);
trả về ww.wMilli giây + 1000 * ww.wGiây;
// hoặc
đồng hồ quay lại();
}

lớpCông việcLớp
{
bool đang hoạt động;
bộ đếm dài không dấu;
XỬ LÝ threadHandle;
công cộng:
Làm việc()
{
threadHandle = GetCurrentThread();
đang_làm việc = đúng;
bộ đếm = GetCounter();
// Thực hiện một số công việc
đang_làm việc = sai;
}
};

void CheckDurations() // sẽ hoạt động trên một luồng khác;
{
for(size_t i =0;i < vector_of_workClass.size(); ++i)
{
WorkClass & wc = vector_of_workClass[i];
if(wc.is_working)
{
unsigned long dur = GetCounter() - wc.counter;
ReportDuration(wc,dur);
if(dur > someLimitValue)
Chấm dứtThread(wc.threadHandle);
}
}
}

câu trả lời hay nhất

Truy vấnHiệu suấtBộ đếm Thích hợp cho các ứng dụng đa luồng. khả thi Hướng dẫn xử lý được sử dụng (rdtsc) có thể cung cấp kết quả không hợp lệ khi được gọi trên bộ xử lý khác.

Tôi khuyên bạn nên đọc "Bộ xử lý đa lõi và tính thời gian cho trò chơi" .

Đối với ứng dụng cụ thể của bạn, vấn đề bạn đang cố gắng giải quyết dường như là việc sử dụng thời gian chờ trên một số luồng có khả năng chạy lâu. Giải pháp đúng là sử dụng Chờ nhiều đối tượngChức năng với giá trị thời gian chờ. Nếu hết thời gian thì bạn có thể hủy bất kỳ luồng nào vẫn đang chạy - lý tưởng nhất là bằng cách đặt cờ để mỗi luồng kiểm tra, nhưng Chấm dứt chủ đề có thể thích hợp.

Về c++ - clock() so với getsystemtime(), chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/4508114/

26 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress