performance - golang如何知道算法消耗的速度和内存容量
问题描述
我有 2 个 golang 算法,它们使用 for 循环和递归。我怎么知道我的两种算法消耗的速度和内存容量?
func forLoop(a int){
for i:=a; i>=0; i--{
fmt.Println("ForLoop = ",i)
}
}
func recursive(a int) int {
if(a<=0){
return 0
}else{
fmt.Println("Recursive = ",a)
return recursive(a-1)
}
}
解决方案
首先,编写两个 Benchmark 测试函数,一个用于调用每个算法。
请参阅Marco Franssen的“在运行中测试和基准测试代码”中的示例。
// main_test.go
func BenchmarkLoop(b *testing.B) {
for i := 0 ; i < b.N ; i++ {
forLoop(100)
}
}
func BenchmarkRecursive(b *testing.B) {
for i := 0 ; i < b.N ; i++ {
recursive(100)
}
}
其次,安装VSCode 扩展 Go Profiling,您将能够直接从您的 IDE 启动 pprof:
然后,您可以比较每个函数花费的时间。
注意:下一个版本的 vscode-go 将提供更好的 pprof 集成:
(可能适用于 vscode-go 0.29:检查版本)
推荐阅读
- json - 如何在python中获得双引号的json正文?
- oracle - 我不小心在任务管理器中结束了任务 ORACLE RDBMS
- mysql - 修改列定义时,Mysql Data truncated for column error
- javascript - 如何将自动完成功能应用于 ag-grid 的单元格?
- java - Searchview 清晰专注于隐藏键盘
- java - 计算文本视图中经过的天数
- ios - Ionic Capacitor iOS Firebase 应用程序无法启动
- google-cloud-platform - 谷歌云功能:错误:超出内存限制。函数调用被中断,但它可以工作
- delphi - 从 TIdTCPServer 调用时 TIdNotify.Notify() 不起作用
- hyperledger-fabric - 超级账本结构在 kubernetes 上部署的一些问题