登录
首页 >  Golang >  Go问答

如何用golang知道算法的速度和消耗的内存容量

来源:stackoverflow

时间:2024-04-12 10:30:35 366浏览 收藏

积累知识,胜过积蓄金银!毕竟在Golang开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《如何用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 中的“Test and benchmark your code in go”中的示例。

// 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 extension Go Profiling,您将能够直接从 ide 启动 pprof:

然后您可以比较每个函数所花费的时间。

注:a better pprof integration is coming with the next version of vscode-go


(可能适用于 vscode-go 0.29:检查 the releases

今天关于《如何用golang知道算法的速度和消耗的内存容量》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>