2011-08-16 19 views
6

Czy można zmierzyć rozdzielczość połączenia std::clock()? Czy jest to problem, w którym obserwacja bez wpływu nie jest możliwa?Pomiar rozdzielczości `std :: clock()`

napisałem następujący naiwny wartość odniesienia:

#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; 
} 

mam go uruchomić kilkaset razy i to zawsze wyprowadza 0.01s.

Moje pytania są następujące:

  • jest powyżej kodu dobrym sposobem pomiaru rozdzielczość clock()?
  • Jeśli nie, to co jest z nim nie tak? I jak można to poprawić?
+1

Co masz na myśli przez "dokładność"? Jak zmierzysz to bez odwoływania się do innego "właściwego" zegara? –

+0

Czy za każdym razem pęka w pierwszej pętli? – James

+1

@Kerrek SB Parafrazujesz moje pytanie. – StackedCrooked

Odpowiedz

2

Można, sortować. Coś takiego, jak to, co robisz, jest dobrym przybliżeniem w skali . Ale nie jestem pewien, jaka jest przydatna: określa rozdzielczość , ale wciąż nie mówi nic o dokładności; pod Windows, na przykład, clock jest na tyle niedokładny, że czyni go bezużytecznym.