Go言語で関数の実行時間を取得する方法
Go 言語では、time パッケージの Because() 関数を使用して関数の実行時間を取得できます。関数を実行する前に開始時刻を設定し、関数の実行開始時刻から関数の実行が終了する現在までの時間を取得します。この時間間隔が関数の実行時間であり、関数の実行時間は次のように計算できます。 time.Since() 関数。構文「time.Since(t)」は、t から現在までの経過時間を返します。
このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。
time.since を使用して実行時間を計算します
関数の実行時間の長さは、この関数のパフォーマンスを測定するための重要な指標です。関数、特に比較 ベンチマーク テストでは、関数の実行時間を取得する最も簡単な方法は、関数が実行される前に開始時刻を設定し、開始時刻から関数が終了する現在までの時間間隔を取得することです。時間間隔は関数の動作時間です。
Go 言語では、time パッケージの Because() 関数を使用して、関数の実行時間を取得できます。Go 言語の公式ドキュメントでの Because() 関数の紹介は次のとおりです。
func Since(t Time) Duration
Since() 関数は、t から現在までの経過時間を返します。これは time.Now().Sub(t) と同等です。
例 1: Because() 関数を使用して関数の実行時間を取得します。
package main import ( "fmt" "time" ) func test() { start := time.Now() // 获取当前时间 sum := 0 for i := 0; i < 100000000; i++ { sum++ } elapsed := time.Since(start) fmt.Println("该函数执行完成耗时:", elapsed) } func main() { test() }
実行結果は次のとおりです:
该函数执行完成耗时: 39.8933ms
time.Now().Sub() の関数は、since() 関数と似ていますが、関数の実行時間を取得するために time.Now().Sub() を使用したい場合は、次の操作のみが必要です。上記のコードの 14 行目を変更するだけです。
例 2: time.Now().Sub() を使用して関数の実行時間を取得します
package main import ( "fmt" "time" ) func test() { start := time.Now() // 获取当前时间 sum := 0 for i := 0; i < 100000000; i++ { sum++ } elapsed := time.Now().Sub(start) fmt.Println("该函数执行完成耗时:", elapsed) } func main() { test() }
実行結果は次のとおりです:
该函数执行完成耗时: 36.8769ms
コンピュータの CPU やその他の要因の影響により、関数の実行時間を取得するときに得られる結果は毎回わずかに異なりますが、これは正常です。
拡張知識: time.Now().Sub() を使用して時差を計算します
時間を置き換えるだけで済みます。 () と time.Now().Sub() は次のように使用できます:
start := time.Now() // 获取当前时间 sum := 0 for i := 0; i < 100000000; i++ { sum++ } elapsed := time.Now().Sub(start) fmt.Println(elapsed)
実際には、time.since は内部的に Sub 関数を呼び出します。確認するために time パッケージを入力してみましょう。アノテーションは次のことを意味します。 Because は t. から経過した時間を返します。 time.Since は time.Now().Sub(t) の略語であり、
\src\time\time.go 923:6
// Since returns the time elapsed since t. // It is shorthand for time.Now().Sub(t). func Since(t Time) Duration { var now Time if t.wall&hasMonotonic != 0 { // Common case optimization: if t has monotonic time, then Sub will use only it. now = Time{hasMonotonic, runtimeNano() - startNano, nil} } else { now = Now() } return now.Sub(t) }
when time.Now().Sub(start).Seconds() を使用して経過した秒数を取得したり、Hours を使用して経過した時間数を取得したりすることもできます。対応するものは、time.since(start).Seconds()、time.since(start).Seconds() などと省略することもできます。
【関連する推奨事項: Go ビデオ チュートリアル 、プログラミング教育 】
以上がGo言語で関数の実行時間を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

大企業または有名なオープンソースプロジェクトによって開発されたGOのどのライブラリが開発されていますか? GOでプログラミングするとき、開発者はしばしばいくつかの一般的なニーズに遭遇します...

Go Crawler Collyのキュースレッドの問題は、Go言語でColly Crawler Libraryを使用する問題を調査します。 �...

マルチプロセスのログライティングの並行性セキュリティの問題を効率的に処理します。複数のプロセスが同じログファイルを同時に書き込みます。並行性が安全で効率的であることを確認する方法は?これは...

Go言語での文字列印刷の違い:printlnとstring()関数を使用する効果の違いはGOにあります...

ポインター構文とviperライブラリの使用における問題への取り組みGO言語でプログラミングするとき、特にポインターの構文と使用を理解することが重要です...

GO言語で構造を定義する2つの方法:VARとタイプのキーワードの違い。構造を定義するとき、GO言語はしばしば2つの異なる執筆方法を見ます:最初...

VSCODEユーザーのGolang Generic Function Typeの制約の自動削除は、VSCODEを使用してGolangコードを書くときに奇妙な問題に遭遇する可能性があります。いつ...
