[問題] 多執行緒反而變慢~

看板C_and_CPP作者 (山中雜草一隻鹿)時間12年前 (2012/07/11 13:52), 編輯推噓0(0017)
留言17則, 7人參與, 最新討論串1/2 (看更多)
最近自己用MFC寫了一個FloodFill演算法要做影像處理.. 但是由於圖檔太大處裡的時間會過久..所以打算利用四核的電腦 將圖片切割成4個執行緒去處理... 但是當我切成4塊去處裡時卻反而比只有一個執行緒在跑時還慢.. 我並沒有去Lock住任何的變數...但一直找不出問題的所在... 在跑4個執行緒時.4個核心的使用量都不到一半..CPU的使用率也都只有25%左右.... 可以請教是那裡出了問題嗎??? 以下是我的FloodFill程式碼: http://codepad.org/yBXdAHv4 http://pastie.org/4243546 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.34.159.188 ※ 編輯: kight 來自: 114.34.159.188 (07/11 14:02) ※ 編輯: kight 來自: 114.34.159.188 (07/11 14:03)

07/11 15:17, , 1F
1.程式用置頂網址貼
07/11 15:17, 1F

07/11 15:18, , 2F
2.你設定的執行緒,跟你的核心沒有直接關係
07/11 15:18, 2F

07/11 18:12, , 3F
記得沒錯的話 好像有執行緒可以指定不同的核心的api
07/11 18:12, 3F
※ 編輯: kight 來自: 114.34.159.188 (07/11 18:18)

07/11 18:19, , 4F
感謝指正...已附上完整的程式碼~~
07/11 18:19, 4F

07/11 18:21, , 5F
我知道執行緒跟核心沒有直接關係,但是之前用另一個演算法也
07/11 18:21, 5F

07/11 18:22, , 6F
是切成4份時,cpu的4個核心都是跑到100%,而且呢..有可能我的
07/11 18:22, 6F

07/11 18:24, , 7F
執行緒CPU並不需要全力去運作...但...也不應該比只有一個執
07/11 18:24, 7F

07/11 18:25, , 8F
行緒跑時慢將近4倍的時間...所以我一直找不出問題的所在...
07/11 18:25, 8F
※ 編輯: kight 來自: 114.34.159.188 (07/11 23:01)

07/11 23:04, , 9F
可以去找個profiling tool來分析效能瓶頸在哪裡
07/11 23:04, 9F

07/11 23:05, , 10F
說不定根本就不是卡在CPU的運算
07/11 23:05, 10F

07/12 03:22, , 11F
要跑乾多核CPU 可以考慮openMP
07/12 03:22, 11F

07/12 12:33, , 12F
疑!codepad 掛了 ?
07/12 12:33, 12F

07/12 13:38, , 13F
沒有阿..我測試是還連得進去...
07/12 13:38, 13F

07/12 13:59, , 14F
我看到 Internal Server Error
07/12 13:59, 14F

07/12 20:29, , 15F
我使用了openMP...還是一樣很慢...XD
07/12 20:29, 15F
※ 編輯: kight 來自: 111.243.144.172 (07/12 20:31)

07/12 20:32, , 16F
真是奇怪,我換了台電腦也是可以連..沒關係.我換連結了...
07/12 20:32, 16F

07/16 03:34, , 17F
WaitForMultipleObjects<=它??
07/16 03:34, 17F
文章代碼(AID): #1F_HIODn (C_and_CPP)
文章代碼(AID): #1F_HIODn (C_and_CPP)