为什么Goroutines的执行时间差异很大?

问题描述 投票:-3回答:1

我只是测量一组goroutines的执行时间。这意味着:

我开始测量,然后启动20个goroutines并在完成后立即停止测量。我重复这个过程4次,然后比较4次执行时间。

有时,这些执行时间差别很大:

20个goroutines的第一次运行:1.2毫秒 20个goroutines的第二轮:1.9毫秒 20个goroutines的第3次运行:1.4 ms 20个goroutines的第4次运行:17.0毫秒!

为什么它有时会有如此显着的差异?有什么办法可以避免吗?

go runtime execution goroutine
1个回答
0
投票

为什么它有时会有如此显着的差异?

执行时间总是在某些时候是不可预测的,正如您对问题的评论中所提到的(CPU,磁盘负载,内存等)

有什么办法可以避免吗?

有一种方法可以使您的测量更有用。 Go有一个内置的基准测试工具(这里有一个关于如何正确使用它的guide)。此工具运行您的代码足够长的时间来确定一定程度上确定的执行时间。

除了显示代码的平均执行时间外,它还可以显示有用的内存信息。

© www.soinside.com 2019 - 2024. All rights reserved.