在Go語言中,可以使用time套件中的Since()函數來取得函數執行時間。在函數執行之前設定一個起始時間,並在函數運行結束時取得起始時間到現在的時間間隔,這個時間間隔就是函數的執行時間;而函數執行時間可以使用time.Since()函數計算,語法“time.Since(t)”,會傳回從t到現在經過的時間。
本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。
使用time.Since計算執行時間
#函數的運行時間的長短是衡量這個函數效能的重要指標,特別是在對比和基準測試中,要得到函數的運行時間,最簡單的辦法就是在函數執行之前設定一個起始時間,並在函數運行結束時取得從起始時間到現在的時間間隔,這個時間間隔就是函數的運行時間。
在Go語言中我們可以使用 time 套件中的 Since() 函數來取得函數的運行時間,Go語言官方文件中對 Since() 函數的介紹是這樣的。
func Since(t Time) Duration
Since() 函數傳回 t 到現在經過的時間,等價於time.Now().Sub(t)。
範例1:使用Since() 函數取得函數的運行時間
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.Since()替換成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套件看,註解的意思是,Since傳回從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) }
當我們也可以使用time.Now().Sub(start).Seconds()取得經過多少秒,Hours取得經過的小時數等,對應的也可以簡寫為time.Since(start).Seconds()、time. Since(start).Seconds()等。
以上是Go語言怎麼取得函數執行時間的詳細內容。更多資訊請關注PHP中文網其他相關文章!

go语言有缩进。在go语言中,缩进直接使用gofmt工具格式化即可(gofmt使用tab进行缩进);gofmt工具会以标准样式的缩进和垂直对齐方式对源代码进行格式化,甚至必要情况下注释也会重新格式化。

go语言叫go的原因:想表达这门语言的运行速度、开发速度、学习速度(develop)都像gopher一样快。gopher是一种生活在加拿大的小动物,go的吉祥物就是这个小动物,它的中文名叫做囊地鼠,它们最大的特点就是挖洞速度特别快,当然可能不止是挖洞啦。

本篇文章带大家了解一下golang 的几种常用的基本数据类型,如整型,浮点型,字符,字符串,布尔型等,并介绍了一些常用的类型转换操作。

是,TiDB采用go语言编写。TiDB是一个分布式NewSQL数据库;它支持水平弹性扩展、ACID事务、标准SQL、MySQL语法和MySQL协议,具有数据强一致的高可用特性。TiDB架构中的PD储存了集群的元信息,如key在哪个TiKV节点;PD还负责集群的负载均衡以及数据分片等。PD通过内嵌etcd来支持数据分布和容错;PD采用go语言编写。

go语言需要编译。Go语言是编译型的静态语言,是一门需要编译才能运行的编程语言,也就说Go语言程序在运行之前需要通过编译器生成二进制机器码(二进制的可执行文件),随后二进制文件才能在目标机器上运行。

在写 Go 的过程中经常对比这两种语言的特性,踩了不少坑,也发现了不少有意思的地方,下面本篇就来聊聊 Go 自带的 HttpClient 的超时机制,希望对大家有所帮助。

删除map元素的两种方法:1、使用delete()函数从map中删除指定键值对,语法“delete(map, 键名)”;2、重新创建一个新的map对象,可以清空map中的所有元素,语法“var mapname map[keytype]valuetype”。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Dreamweaver CS6
視覺化網頁開發工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具