如果我在其上运行go代码的服务器只有一个内核,我可以通过在其上运行goroutines来期待更好的性能吗?是的,为什么在没有并行机制的情况下速度更快?
最佳答案
这取决于代码和您要阻止的内容。如果您正在阻塞I / O(但仍有其他非I / O工作要做),则单个内核上的多个goroutine可能会大大加快。如果您在CPU上阻塞,则由于额外的开销,多个goroutine可能会变慢。如果您在内存上进行阻塞,则由于额外的争用和缓存无效化,多个goroutine的速度可能会大大降低。没有普遍的答案。这取决于您要用并发解决什么问题,以及如何实现它。
关于go - 单核上的goroutine是否更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60518622/