2011-08-16 8 views
6

È possibile misurare la risoluzione della chiamata std::clock()? O si tratta di un problema in cui l'osservazione senza influenzare non è possibile?Misurazione della risoluzione di `std :: clock()`

ho scritto il seguente parametro di riferimento ingenuo:

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

Ho eseguito un paio di centinaia di volte ed emette sempre 0.01s.

Le mie domande sono:

  • è al di sopra di codice un buon modo per misurare la risoluzione di clock()?
  • Se no allora cosa c'è di sbagliato in esso? E come potrebbe essere migliorato?
+1

Cosa intendi per "precisione"? Come lo misurerai senza fare riferimento a un altro orologio "corretto"? –

+0

Si interrompe ogni volta al primo ciclo? – James

+1

@Kerrek SB stai parafrasando la mia domanda. – StackedCrooked

risposta

2

È possibile, una specie di. Qualcosa di simile a quello che stai facendo è una buona prima approssimazione . Ma non sono sicuro di quanto sia utile: determina la risoluzione , ma ancora non ti dice nulla sulla precisione; sotto Windows, ad esempio, clock è così impreciso da renderlo inutilizzabile .