2011-12-19 53 views
12

thể trùng lặp:
How to measure time in milliseconds using ANSI C?
How can I get the Windows system time with millisecond resolution?Làm thế nào để có được thời gian hiện tại trong mili giây trong C Programming

Chúng tôi muốn để tính toán thời gian mà một cầu thủ đã thực hiện để hoàn thành trò chơi . Nhưng với thời gian.h chúng tôi chỉ có thể tính bằng giây. nhưng điều đó không chính xác. Có thể nhận thời gian bằng mili giây không? và% là gì? để printf?

+2

chính xác dupilcate http://stackoverflow.com/questions/361363/how-to-measure-time-in-milliseconds-using-ansi-c – niko

Trả lời

15

câu trả lời nhanh

#include<stdio.h> 
#include<time.h> 

int main() 
{ 
    clock_t t1, t2; 
    t1 = clock(); 
    int i; 
    for(i = 0; i < 1000000; i++) 
    { 
     int x = 90; 
    } 

    t2 = clock(); 

    float diff = ((float)(t2 - t1)/1000000.0F) * 1000; 
    printf("%f",diff); 

    return 0; 
} 
+15

Tôi nghĩ 'clock' mang lại thời gian cpu được sử dụng, không phải là thời gian thực . – cnicutar

+14

Mã này, trong khi có thể đúng trên một số hệ thống, sẽ không phải lúc nào cũng hoạt động. Bạn nên sử dụng CLOCKS_PER_SEC thay vì mã cứng 1000000. – jarmod

+1

@jarmod pickup đẹp - yêu cầu của nó đặc biệt là trên windows dưới MS VC++, nơi CLOCKS_PER_SEC được đặt thành 1000. –

17

Không có cách nào di động để có được độ phân giải ít hơn một giây trong tiêu chuẩn C Vì vậy, tốt nhất bạn có thể làm được, sử dụng POSIX chức năng gettimeofday().

2

Nếu bạn đang ở trên một hệ thống Unix-like, sử dụng gettimeofday và chuyển đổi kết quả từ micro đến mili giây.

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