我有一个C ++代码,运行时间超过20000次。代码解决了多个线性系统(矩阵),我正在努力优化这个代码。我很困惑我是否应该创建一个线程并在每次迭代时终止它,或者只是在第一次迭代期间创建线程并在其余迭代期间执行所有其他线程之间的同步。为什么方式更贵? 我在C ++中使用线程库,我打算使用Semaphore进行同步。
答案 0 :(得分:1)
在线程的这种特定情况下,很难回答什么是更好的。但是由于线程创建/破坏开销,在第一次迭代时创建线程并在整个计算序列之后终止它们是很好的做法。
另一个相互关联的主题是多任务处理,您只需创建包含要计算的部分数据的任务/作业。这很好,因为你自动在CPU上获得计算平衡(但这取决于你的算法)。