Go での正確な継続時間の測定: 単調時計を理解する
Go で継続時間を正確に測定するには、壁時計と時計の違いを理解する必要があります。単調時計。
壁の問題時計
time.Now() の使用などの従来の時間測定アプローチは、次の影響を受けやすい壁時計に依存しています。
単調クロック: A解決策
モノトニック クロックは、外部要因に関係なく正確な時刻測定を提供する特殊な計時メカニズムです。これらは、壁時計の変更中や時計の同期中であっても、一定の割合で増加します。
Go の単調クロック サポート
Go 1.9 以降では、時間パッケージは大幅な変更を受けました。この問題に対処するために変更します。 time.Time 構造体には、ウォール クロックとモノトニック クロックの読み取り値の両方が組み込まれるようになりました。
時刻を伝える操作 (書式設定など) ではウォール クロックが使用され、時間測定の操作 (比較や減算など) ではモノトニック クロックが使用されます。クロック。これにより、測定中に壁時計が変化した場合でも、t.Sub(start) によって計算された時間などの継続時間が正確に保たれます。
コード例
考慮してください次のコード スニペット:
start := time.Now() // ... operation that takes 20 milliseconds ... t := time.Now() elapsed := t.Sub(start)
壁時計が変更される可能性があるにもかかわらず、このコードは一貫して経過時間を計算します。 Go は継続時間に単調クロックを使用しているため、時間は約 20 ミリ秒です。
結論
正確な継続時間を測定するには、壁時計と単調クロックの区別を理解することが重要です。囲碁で。単調時計を使用した推奨アプローチを採用することで、開発者は時間測定の信頼性を維持し、壁時計の制限の影響を受けないようにすることができます。
以上がGo の単調クロックはどのようにして正確な時間測定を保証できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。