2011-08-16 12 views
6

¿Es posible medir la resolución de la llamada std::clock()? ¿O es esto un problema donde no es posible observar sin influenciar?Medición de la resolución de `std :: clock()`

escribí el siguiente punto de referencia ingenua:

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

me he encontrado que unos pocos cientos de veces y siempre da salida a 0.01s.

Mis preguntas son:

  • está por encima de código de una buena manera de medir la resolución de clock()?
  • Si no, entonces ¿cuál es el problema? ¿Y cómo podría mejorarse?
+1

¿Qué quiere decir con "precisión"? ¿Cómo lo medirá sin referirse a otro reloj "apropiado"? –

+0

¿Se rompe en el primer bucle cada vez? – James

+1

@Kerrek SB está parafraseando mi pregunta. – StackedCrooked

Respuesta

2

Usted puede, en cierto modo. Algo como lo que estás haciendo es una buena primera aproximación . Pero no estoy seguro de lo útil que es: determina la resolución , pero todavía no le dice nada sobre la precisión; en Windows, por ejemplo, clock es tan inexacto que lo hace inútil.

Cuestiones relacionadas