登录
首页 >  Golang >  Go问答

测量多个函数同时执行的时间方法

来源:stackoverflow

时间:2024-03-09 21:51:20 205浏览 收藏

你在学习Golang相关的知识吗?本文《测量多个函数同时执行的时间方法》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

我有 for 循环来执行 goroutine。这是一段代码:

var wg sync.WaitGroup
for _, photo := range photos {
        wg.Add(1)
        
        go func() {
            defer wg.Done()
            start := time.Now()
            
            result := process(photo)
            
            fmt.Println("took %s", time.Since(start))
        }()
    }
    
    go func() {
        wg.Wait()
    }()

在上面的代码中,我想计算每个 process(photo) 函数的执行时间。但我的做法似乎不对。我得到的数字不是真实的。我的错误在哪里以及如何解决?


正确答案


与其创建与要处理的图片一样多的 goroutine,不如创建与 CPU 核心一样多的 goroutine,这样就不会浪费或耗尽系统资源。向每个空闲 goroutine 分发一张图片,并在处理图片时腾出时间。当图片处理结束并且您停止计时器时,记录时间并手动让 goroutine 处理另一张图片。没有等待调度的 goroutine 消耗内存。

请参阅 https://gobyexample.com/worker-pools 了解起点。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《测量多个函数同时执行的时间方法》文章吧,也可关注golang学习网公众号了解相关技术文章。

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