2011-08-16 40 views
6

Có thể đo độ phân giải của cuộc gọi std::clock() không? Hay đây có phải là một vấn đề mà việc quan sát mà không ảnh hưởng là không thể?Đo độ phân giải của `std :: clock()`

tôi đã viết các chuẩn mực ngây thơ sau:

#include <ctime> 
#include <iostream> 

int main() { 
    std::clock_t initial = std::clock(); 
    std::clock_t current; 
    while (initial == (current = std::clock())); 
    std::cout << "Initial: " << initial << std::endl; 
    std::cout << "Current: " << current << std::endl; 
    std::cout << "Precision: " << (static_cast<double>(current - initial)/CLOCKS_PER_SEC) << "s" << std::endl; 
} 

tôi đã chạy nó một vài trăm lần và nó luôn luôn kết quả đầu ra 0.01s.

Câu hỏi của tôi là:

  • là trên mã một cách tốt để đo độ phân giải của clock()?
  • Nếu không thì có gì sai với nó? Và làm thế nào nó có thể được cải thiện?
+1

Bạn có ý nghĩa gì bởi "độ chính xác"? Làm thế nào bạn sẽ đo lường mà không đề cập đến khác, "thích hợp" đồng hồ? –

+0

Nó có bị hỏng trên vòng lặp đầu tiên không? – James

+1

@Kerrek SB bạn đang diễn giải câu hỏi của tôi. – StackedCrooked

Trả lời

2

Bạn có thể, sắp xếp. Một cái gì đó giống như những gì bạn đang làm là một xấp xỉ đầu tiên tốt. Nhưng tôi không chắc nó hữu ích như thế nào: nó quyết định độ phân giải , nhưng nó vẫn không cho bạn biết gì về độ chính xác; trong Windows, ví dụ: clock quá không chính xác để hiển thị số vô dụng.

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