2015-02-06 92 views
0

我有一個運行超過20000次的C++代碼。該代碼解決了多個線性系統(矩陣),我正致力於優化此代碼。我只是困惑我是否應該創建一個線程並在每次迭代中殺死它,或者只是在第一次迭代期間創建線程,並在其餘迭代期間在所有其他線程之間進行同步。爲什麼方式更昂貴? 我在C++中使用線程庫,並計劃使用Semaphore進行同步。線程vs同步

+3

最好的方法是:自己動手,回來告訴我們。也不要過早地優化,只有當你真的確定這個循環是你的瓶頸時,你是否應該優化它 – Creris 2015-02-06 13:06:34

+3

但我敢肯定創建一個線程並殺死它20000次是不是要走的路:) – Drax 2015-02-06 13:15:51

回答

1

在線程的這種特定情況下,真的很難回答什麼更好。但是在第一次迭代中創建線程並在整個計算序列之後殺死它們是很好的做法,因爲線程創建/銷燬開銷。

另一個營銷主題是多任務處理,您只需創建包含部分數據的任務/作業即可進行計算。這很好,因爲你可以在CPU上自動獲得計算平衡(但這依賴於你的算法)。