Tôi đang cố gắng đo thời gian thực hiện một chức năng.Thời gian đo được thực hiện bởi một hàm: clock_gettime
Tôi có một vấn đề nhỏ: mặc dù tôi đang cố gắng chính xác và sử dụng các dấu phẩy động, mỗi lần tôi in mã bằng% lf tôi nhận được một trong hai câu trả lời: 1.000 ... hoặc 0.000 .... dẫn tôi đến thắc mắc xem mã của tôi có đúng không:
#define BILLION 1000000000L;
// Calculate time taken by a request
struct timespec requestStart, requestEnd;
clock_gettime(CLOCK_REALTIME, &requestStart);
function_call();
clock_gettime(CLOCK_REALTIME, &requestEnd);
// Calculate time it took
double accum = (requestEnd.tv_sec - requestStart.tv_sec)
+ (requestEnd.tv_nsec - requestStart.tv_nsec)
/BILLION;
printf("%lf\n", accum);
Hầu hết mã này chưa được tôi thực hiện. Trang ví dụ này có mã minh họa việc sử dụng clock_gettime: http://www.users.pjwstk.edu.pl/~jms/qnx/help/watcom/clibref/qnx/clock_gettime.html
Có thể vui lòng cho tôi biết điều gì không chính xác hoặc tại sao tôi chỉ nhận giá trị số nguyên?
Thank you very much,
Jary
Không, không, không: don' t đặt tên cho các số. Thay vào đó, hãy sử dụng hàm mà họ phân phối: '#define CLOCK_PRECISION 1000000000L/* một tỷ * /' – pmg
@pmg: Tiếp tuyến giả: Tôi cho rằng tên như 'CLOCK_PRECISION' sẽ chỉ cần thiết nếu đơn vị không rõ ràng từ tên biến. Trong trường hợp trên, nó rõ ràng với cái tên 'tv_nsec' mà chúng ta đang tính bằng nano giây. Vì vậy, 'NANOSECONDS_PER_SECOND' có thể phù hợp, nhưng thực sự không khác gì nhiều so với' BILLION'. –