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

我只是在衡量一组goroutine的执行时间。 这意味着:</ p>

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

有时,这些执行时间有很大不同:</ p>

第20次运行 goroutines:1.2 ms

第二次运行20个goroutines:1.9 ms

第三次运行20个goroutines:1.4 ms

第四次运行20个goroutines:17.0 ms!</ p>

为什么有时会有如此大的差异? 有什么办法可以避免呢?</ p>
</ div>

展开原文

原文

I'm just measuring the execution time of a set of goroutines. That means:

I start measuring, then start 20 goroutines and stop measuring as soon as they finish. I repeat that process like 4 times and then compare the 4 exection times.

Sometimes, these execution times differ significantly:

1st run of the 20 goroutines: 1.2 ms
2nd run of the 20 goroutines: 1.9 ms
3rd run of the 20 goroutines: 1.4 ms
4th run of the 20 goroutines: 17.0 ms!

Why does it sometimes differ so significantly? Is there any way to avoid it?

doucang6914
doucang6914 至于为什么不同:多种原因。在慢速运行时,某些东西可能正在后台运行,而这恰好需要CPU,磁盘或其他共享资源。
一年多之前 回复
doujing2497
doujing2497 4不是有意义的样本量。您应该进行数千次这样的测试才能获得有意义的结果。
一年多之前 回复

1个回答




为什么有时有时会有如此大的差异?</ p>
</ blockquote>

< p>执行时间总是无法预测,就像您对问题的注释(CPU,磁盘负载,内存等)中提到的那样。</ p>


有什么办法吗? 避免这种情况?</ p>
</ blockquote>

有一种方法可以使您的测量更加有用。 Go具有内置的基准测试工具(这是指南以了解如何正确使用它)。 此工具仅运行您的代码足够的时间来确定确定性的执行时间。</ p>

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

展开原文

原文

Why does it sometimes differ so significantly?

Execution time will always be unpredictable to some point, as mentioned in comments to your questions (CPU, disk load, memory, etc.)

Is there any way to avoid it?

There is a way to make your measurements more useful. Go has a built-in benchmark tool (here is a guide on how to use it properly). This tool runs your code just enough times to determine a somewhat deterministic execution time.

In addition to showing average execution time for your code, it can also show useful memory information.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐