以毫秒精度測量Go 中的函數執行時間
Go 中的挑戰之一是確定函數的運行時間並在中報告它毫秒。
解:利用 Go 的 defer
Go 的 defer 語句為計時函數提供了便利的解。實作方法如下:
第1 步:定義實用函數
在Go 1.x 定義下列實用函數:
func trace(s string) (string, time.Time) { log.Println("START:", s) return s, time.Now() } func un(s string, startTime time.Time) { endTime := time.Now() log.Println(" END:", s, "ElapsedTime in seconds:", endTime.Sub(startTime)) }
第2 步:為函數計時
要為名為someFunction 的函數計時,請使用trace() 和un() 呼叫將其包裝起來,如下所示:
func someFunction() { defer un(trace("SOME_ARBITRARY_STRING_SO_YOU_CAN_KEEP_TRACK")) // Do your function logic here }
說明
在函數的開頭呼叫trace()函數,記錄開始時間。 un() 函數被推遲到函數的末尾,測量經過的時間並將其以毫秒精度列印到日誌中。
自訂時間測量
This可以透過調整 endTime.Sub(startTime) 計算來修改技術以測量其他時間單位,例如奈秒或微秒。
透過利用 Go 的 defer 語句,您可以輕鬆準確地以毫秒為單位測量函數執行時間,提供對於效能最佳化的寶貴見解。
以上是如何以毫秒精度有效測量 Go 中的函數執行時間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!