您可以在此处查看代码:
它输出:
Linear Search took: 8.382931ms
Conc Search took: 19.413568ms
Conc Two Search took: 16.023011ms
Conc 2 Search With Done Check Delay took: 9.608122ms
两个并发搜索需要16到21毫秒之间的时间。但是总是比线性搜索要慢。
有人可以向我提出一些关于为什么会这样以及将来如何正确调试的想法吗?
有关代码要测试的内容的一些背景:
sqrt(n)
开始线性检查是否存在n的除数我尝试了什么?
我唯一的想法是,如此频繁地检查“完成”频道会花费很多时间。但这似乎不是全部问题。同样如果是,我如何找到“最佳”循环数量以检查“完成”通道。
代码:https://github.com/kennethgoodman/learning-golang/blob/master/concurrentPrimeChecker.go
实际:
Linear Search took: 8.382931ms
Conc Search took: 19.413568ms
Conc Two Search took: 16.023011ms
Conc 2 Search With Done Check Delay took: 9.608122ms
期望结果是线性结果除以在不同CPU上运行的goroutine的数量。