为什么Goroutines的执行时间会明显不同?

时间:2019-03-10 11:17:04

标签: go runtime execution goroutine

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

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

有时,这些执行时间明显不同:

20个goroutine的第一次运行:1.2毫秒
20个goroutine的第二次运行:1.9毫秒
20个goroutine的第3次运行:1.4毫秒
20个例行程序中的第4次运行:17.0毫秒!

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

1 个答案:

答案 0 :(得分:0)

  

为什么有时有时会有如此大的差异?

执行时间总是无法预测的,正如您对问题(CPU,磁盘负载,内存等)的评论中所提到的那样。

  

有什么办法可以避免吗?

有一种方法可以使您的测量更加有用。 Go有一个内置的基准测试工具(这里是guide,介绍如何正确使用它)。该工具仅运行您的代码足够的时间来确定确定性的执行时间。

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