0
我正在使用goroutine遇到一些奇怪的行为,请提供建议或评论我可能做错的事情。这是我的过程:影响goroutine性能的因素
我正在使用goroutines同时执行模拟,但由于某些原因,我花费的时间随着我放入的goroutines数量增加,使得我的模拟无法在合理的时间内完成。下面是我看到的东西:
每10K够程启动,由5秒
计算时间的增加,我不看到CPU或内存不足。但是,对于每10k个例程,CPU使用率仅增加一点点。例如,当我把20万个够程,CPU使用率在70%左右,我没有使用磁盘
我跑了模拟而不触发够程,它完成得非常快,所以是缓慢的内部或
由于goroutines
我试图在每个goroutine内部1次使用额外的goroutines来并行运行一些工作量。 CPU使用率提高到100%,但总体速度下降50%...
我正在通过一些大的结构使用指针的goroutines。所有的goroutines使用相同的数据。
有没有人对我可能需要优化的东西有任何线索,或者建议我进行任何测试?谢谢!
你的程序是否正在修改结构的数据? – Acidic
如果所有的例程都连续运行(即不阻塞I/O),那么通过拥有比系统可同时运行的线程数更多的goroutine,您将不会获得任何性能优势。事实上,拥有更多的goroutines会减慢速度,因为它们之间的切换涉及到开销。 –