Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么goroutine的执行时间有显著差异?_Go_Runtime_Execution_Goroutine - Fatal编程技术网

为什么goroutine的执行时间有显著差异?

为什么goroutine的执行时间有显著差异?,go,runtime,execution,goroutine,Go,Runtime,Execution,Goroutine,我只是在测量一组goroutine的执行时间。这意味着: 我开始测量,然后开始20个goroutines,一旦完成就停止测量。我重复这个过程4次,然后比较4次执行时间 有时,这些执行时间差异很大: 20个goroutines中的第一次运行:1.2毫秒 20个goroutines的第二次运行:1.9毫秒 20个goroutines中的第3次运行:1.4毫秒 第四轮20个goroutines:17.0毫秒 为什么有时差异如此显著?有什么办法可以避免吗 为什么有时差异如此显著 执行时间在某种程度上总是

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

我开始测量,然后开始20个goroutines,一旦完成就停止测量。我重复这个过程4次,然后比较4次执行时间

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

20个goroutines中的第一次运行:1.2毫秒 20个goroutines的第二次运行:1.9毫秒 20个goroutines中的第3次运行:1.4毫秒 第四轮20个goroutines:17.0毫秒

为什么有时差异如此显著?有什么办法可以避免吗

为什么有时差异如此显著

执行时间在某种程度上总是不可预测的,正如在对CPU、磁盘负载、内存等问题的评论中提到的

有什么办法可以避免吗

有一种方法可以让你的测量更有用。Go有一个内置的基准测试工具,下面是一个关于如何正确使用它的示例。此工具运行代码的次数刚好足以确定某种程度上确定的执行时间


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

4不是一个有意义的样本量。为了得到一个有意义的结果,你应该运行数千次这样的测试。有些东西可能在后台运行,在慢运行时恰好需要CPU、磁盘或其他共享资源。