Mesure précise de la durée en Go : Comprendre les horloges monotones
Mesurer précisément la durée du temps en Go nécessite une compréhension de la différence entre les horloges murales et horloges monotones.
Le problème avec le mur Horloges
Les approches traditionnelles de mesure du temps, comme l'utilisation de time.Now(), s'appuient sur des horloges murales susceptibles de :
Horloges monotones : une solution
Les horloges monotones sont des mécanismes de chronométrage spécialisés qui fournir des mesures de temps précises quels que soient les facteurs externes. Ils s'incrémentent à un rythme constant, même lors des changements d'horloge murale ou de la synchronisation de l'horloge.
Prise en charge de l'horloge monotone de Go
Dans Go 1.9 et versions ultérieures, le package horaire a subi une modification importante. changement pour résoudre ce problème. La structure time.Time intègre désormais à la fois les lectures d'horloge murale et d'horloge monotone.
Les opérations de lecture de l'heure (par exemple, le formatage) utilisent l'horloge murale, tandis que les opérations de mesure du temps (par exemple, les comparaisons et les soustractions) utilisent l'horloge monotone. horloge. Cela garantit que les durées, telles que celles calculées par t.Sub(start), restent précises même si l'horloge murale change pendant la mesure.
Exemple de code
Considérez l'extrait de code suivant :
start := time.Now() // ... operation that takes 20 milliseconds ... t := time.Now() elapsed := t.Sub(start)
Malgré les changements potentiels d'horloge murale, ce code calculera systématiquement un temps écoulé d'environ 20 millisecondes en raison de l'utilisation par Go d'horloges monotones pour les durées.
Conclusion
Comprendre la distinction entre les horloges murales et les horloges monotones est crucial pour une mesure précise de la durée dans Go. En adoptant l'approche recommandée utilisant des horloges monotones, les développeurs peuvent garantir que leurs mesures du temps restent fiables et ne sont pas affectées par les limitations des horloges murales.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!