Go で時間を正確に測定する
背景:
継続時間を測定する従来の方法タイム パッケージの使用は、タイム ゾーンの変更やリープなどのシステム時間の調整により不正確になる可能性があります。秒。これらの調整は、time.Now() に基づく時間測定の精度に影響を与える可能性があります。
単調クロック:
Go は、単調クロックを使用することでこの問題を解決します。そのような調整の対象となります。 Go 1.9 以降、Go は継続時間を測定するための単調クロックを提供します。これにより、システム時間が変化した場合でも、経過時間の測定が一貫性があり正確であることが保証されます。
例:
start := time.Now() ... operation that takes 20 milliseconds ... t := time.Now() elapsed := t.Sub(start)
この例では、経過時間は常に操作中に壁時計が変更されたかどうかに関係なく、約 20 ミリ秒になります。
その他イディオム:
単調クロックを使用するその他の時間演算include:
これらのイディオムは壁時計に対しても堅牢です
注:
Go 1.9 より前では、時間の測定に time.Now() を使用すると不正確になる可能性がありました。ただし、単調クロックの導入により、Go は正確で信頼性の高い時間測定を提供できるようになりました。
以上がシステム時刻が変更された場合でも、継続時間を正確に測定するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。