看板 C_and_CPP 關於我們 聯絡資訊
最近自己用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)
diabloevagto:1.程式用置頂網址貼 07/11 15:17
diabloevagto:2.你設定的執行緒,跟你的核心沒有直接關係 07/11 15:18
hotman1014:記得沒錯的話 好像有執行緒可以指定不同的核心的api 07/11 18:12
※ 編輯: kight 來自: 114.34.159.188 (07/11 18:18)
kight:感謝指正...已附上完整的程式碼~~ 07/11 18:19
kight:我知道執行緒跟核心沒有直接關係,但是之前用另一個演算法也 07/11 18:21
kight:是切成4份時,cpu的4個核心都是跑到100%,而且呢..有可能我的 07/11 18:22
kight:執行緒CPU並不需要全力去運作...但...也不應該比只有一個執 07/11 18:24
kight:行緒跑時慢將近4倍的時間...所以我一直找不出問題的所在... 07/11 18:25
※ 編輯: kight 來自: 114.34.159.188 (07/11 23:01)
james732:可以去找個profiling tool來分析效能瓶頸在哪裡 07/11 23:04
james732:說不定根本就不是卡在CPU的運算 07/11 23:05
ThomasHuang:要跑乾多核CPU 可以考慮openMP 07/12 03:22
EdisonX:疑!codepad 掛了 ? 07/12 12:33
kight:沒有阿..我測試是還連得進去... 07/12 13:38
james732:我看到 Internal Server Error 07/12 13:59
kight:我使用了openMP...還是一樣很慢...XD 07/12 20:29
※ 編輯: kight 來自: 111.243.144.172 (07/12 20:31)
kight:真是奇怪,我換了台電腦也是可以連..沒關係.我換連結了... 07/12 20:32
alex780312:WaitForMultipleObjects<=它?? 07/16 03:34