3 回答

TA貢獻1842條經(jīng)驗 獲得超22個贊
對小的值進行分區(qū)和分組結果(分割工作和從多個線程/核心收集結果的開銷)很高nt
。這是正常的,您不會為可以在簡單循環(huán)中快速執(zhí)行的簡單任務分區(qū)數(shù)據(jù)。
始終在循環(huán)內(nèi)執(zhí)行一些具有挑戰(zhàn)性的東西,這值得分區(qū)開銷。這是對并行編程的一個很好的介紹。
線程來自線程池,因此創(chuàng)建線程的開銷不應該存在。但是為了創(chuàng)建部分結果必須創(chuàng)建大小的n
矩陣,bistar
計算所有部分結果,然后必須添加所有這些部分結果(重新組合)。在直接循環(huán)中,這很有可能就地完成,不進行分配。
幫助中的完整聲明(感謝您的鏈接):
如果計算f,g和h的時間很長,則parfor將明顯快于相應的for語句,即使n相對較小。
所以你看他們的意思與我的意思完全相同,如果你在循環(huán)中做的事情足夠復雜/耗時,那么小n值的開銷只值得努力。

TA貢獻2039條經(jīng)驗 獲得超8個贊
除了由于通信開銷導致的性能不佳(參見其他答案)之外,還有另一個原因是parfor
在這種情況下不使用。parfor
在這種情況下完成的所有內(nèi)容都使用內(nèi)置多線程。假設所有工作人員都在同一臺PC上運行,那么沒有任何優(yōu)勢,因為單個呼叫已經(jīng)使用了處理器的所有核心。
添加回答
舉報