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.
の単調クロックを削除します。免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3