「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > ゴータイムとその2つの時計

ゴータイムとその2つの時計

2024 年 11 月 18 日に公開
ブラウズ:854

Go time and its two clocks

Go で時間の経過を計算するには、
を使用できます。

start := time.Now()
// long time consuming task
duration := time.Since(start)

しかし、Go の time パッケージには実際には 2 つの時間が含まれており、time.since() は実際には処理時間 (単調時計) のみを測定し、実時間 (壁時計) は測定しないことをご存知ですか?

たとえば、タスクがかなり長く、一晩かかるため、コンピュータがスリープ状態になった場合です。そして朝になると、合計 10 時間が経過しているのに、その期間が 4 時間しか続かないことがわかるかもしれません。

Go の time パッケージには

と記載されています

オペレーティング システムは、クロック同期のために変更される「ウォール クロック」と、変更されない「モノトニック クロック」の両方を提供します。一般的なルールは、掛け時計は時間を伝えるためのものであり、単調時計は時間を測定するためのものです。

上記の例で実際にわかることは、プログラムは 4 時間アクティブに実行されましたが、コンピューターは 6 時間スリープするため、合計で 10 時間待機したことになります。コンピュータがスリープしていなければ、4 時間で完了します。

それでは、経過時間を測定したい場合はどうすればよいでしょうか? Round(0)関数を使用できます。 t = t.Round(0) は t.

の単調クロックを削除します。
リリースステートメント この記事は次の場所に転載されています: https://dev.to/jingshao_chen_02a2352f476/go-time-and-its-two-locks-3p0p?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3