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

Bộ đếm thời gian C++ (tính bằng micro giây)

In lại Tác giả: Walker 123 Thời gian cập nhật: 28-11-2023 00:30:21 26 4
mua khóa gpt4 Nike

Tôi đang cố gắng hẹn giờ tính bằng micro giây nhưng nó không hoạt động.

#include 
#include
#include

sử dụng không gian tên std;

int chính()
{
struct timespec start_time;
cấu trúc timespec end_time;
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &start_time);
ngủ (5000);
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &end_time);
cout << "BẮT ĐẦU: " << (start_time.tv_nsec/1000) << endl;
cout << "END: " << (end_time.tv_nsec/1000) << endl;
cout << "DIFF: " << (end_time.tv_nsec - start_time.tv_nsec) /1000 << endl;

trả về 0;
}

Kết quả là thế này:

BẮT ĐẦU: 3586
KẾT THÚC: 3630
KHÁC BIỆT: 43

Tôi cần DIFF ở khoảng 5000. Có gợi ý gì không?

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

Tôi không chắc bạn đang cố gắng đo lường điều gì, nhưng tôi đoán CLOCK_PROCESS_CPUTIME_ID là bộ đếm thời gian sai, nếu bạn muốn đo thời gian đã trôi qua, bạn có thể cần CLOCK_MONOTONICthời gian. hãy nhìn xem câu hỏi stackoverflow tương tựĐiều này cho thấy đồng hồ_gettime sự khác biệt giữa các đồng hồ khác nhau.

Nghĩa là, để có được toàn bộ thời gian bạn phải thêm tv_sectv_nsec(Tất nhiên trước tiên tv_sec Chuyển đổi thành nano giây) mỗi phép đo rồi trừ tổng, như sau:

uint64_t startNs = start_time.tv_sec * 1000 * 1000 * 1000 + start_time.tv_nsec;
uint64_t endNs = end_time.tv_sec * 1000 * 1000 * 1000 + end_time.tv_nsec;
uint64_t diffNs = endNs - startNs;
uint64_t diffMicro = diffNs/1000;

Nếu bạn đang sử dụng C++11, tốt hơn nên sử dụng một số lớp cấp caoTừ không gian tên chrono.

Về bộ tính giờ C++ (tính bằng micro giây), 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/23186201/

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