2017-06-10 4 views
2

J'ai récemment travaillé avec quelques exemples de performance en java et suis tombé sur cet extrait:Motif en retard d'erreur supplémentaire dans ce code de synchronisation

long start = System.nanoTime(); 
// code to be timed goes here... 
long finish = System.nanoTime(); 
long error = System.nanoTime() - finish; 
long duration = finish - start - error; 

Je comprends maintenant ce le code est fait, mais pas pourquoi pourquoi le chronométrage error est également soustrait?

Beaucoup de fois je l'ai vu ce genre de chose:

long start = System.nanoTime(); 
// code to be timed goes here... 
long finish = System.nanoTime(); 
long duration = finish - start; 

Mais pas ce concept du calendrier d'erreur supplémentaire avant.

Répondre

2

Ceci est fait dans le but de soustraire le temps nécessaire pour exécuter l'instruction long finish = System.nanoTime();. L'auteur ne veut pas que l'action d'arrêter le chronomètre compte par rapport au code testé.

À moins que vous ayez vraiment affaire à une précision de niveau nanométrique, c'est excessif, et peut même ne pas vraiment tenir compte des intentions de l'auteur.