請問比對圖片想使用多執行緒的方式,但還是單線程問題 |
答題得分者是:aftcast
|
jcjroc
高階會員 發表:21 回覆:279 積分:115 註冊:2002-09-18 發送簡訊給我 |
舒馬克,法拉利那些都是廢話............
給你那些API如果你夠仔細,網路上一堆範例與應用說明....... 只處理一份資料0.5秒跟5秒之差是會死喔!!!但如果一次要處理一萬份那真的會死.......... 也就那麼零點幾秒.......所以客戶買你的產品!!! 記憶體映射有太多的應用價值.......徹底了解它百利無弊............. 給你個文章隨便看一看吧!!雖然應該沒幫助!!! http://www.softhouse.com.cn/news/show/63183.html ===================引 用 macchen 文 章=================== 好吧,感謝你的回覆,我沒有慧根,還是不了解,但畢竟我是發問問題的人,本來就該虛心指教,並且不是每個人都願意教導別人的,謝謝大家。 ===================引 用 jcjroc 文 章=================== 舒馬克當然是車神...........極速90是因為給他的車是台20幾年前的裕隆速利1200 法拉利當然是超級跑車...........問題是我不知道要換檔...................... 以上的共通點是......裕隆速利是我給舒馬克的................法拉利是我開的.......... 結論是不管法拉利或是舒馬克都很爛............而我是最好的............ 程式跑不快...........是硬體還是軟體關係?????阿災............反正這時候我是路人甲買醬油路過的....... 題外話........如果你的題目是我做的話,依需求,對我來說會趨近線性沒錯. |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
To Macchen:
昨天我和一位朋友問了一下你的問題,他剛好做的工作與你接近,他是六核拆成四條thread,使用TBitmap來比對,速度比一條快不少。感覺上會不會是你的演算法上有一些問題 ? 是否詳細的看一下你拆解的部份。 此外,那位友人沒使用「指定哪個核心」,他讓os自己去分配,理論上他看到的是每條thread自然的就會在不同的core上跑。你也可試著不指定看看… 至於是否使用bitmap的檔案的結構來比較…建議是等你多核分配有達成效能提昇後,再進一步考慮改寫比對方式。以我朋友的數據來說,他一thread跑 0.7 四thread 則跑 0.25秒…這種倍數的成長應該才是比較明顯的。 關於MapViewOfFile,多數是用在記憶共享; 但特大檔案,比如幾g的檔,也要分段讀入記憶體中,而這與一般讀檔最大的不同是他並非需要一次讀到檔結束。但事實上他也是需要分段讀入 (假使一整個檔最終都需要被讀入)。整體上來說會不會比較快? 只能說以使用者的角度來說,極大檔若使用一般的讀檔方式,會產生類似死當…使用者是不能接受的,另外,若你的ram不是很大那也是會造成hd在swap,也是會慢。然而…若你的檔案只是幾mb,連個50m都不到,一次讀入後應該是速度比較快,比MapViewOfFile快! 我個人認為,不是所有的時刻都來使用這個api,而是在適當的時候該用就要用。file-mapping object 是屬於kernel object,事實上較耗資源。就好像mutex比criticalsection要慢的道理有點一樣。以上這是我的觀點!僅供參考! ===================引 用 macchen 文 章=================== 好吧,感謝你的回覆,我沒有慧根,還是不了解,但畢竟我是發問問題的人,本來就該虛心指教,並且不是每個人都願意教導別人的,謝謝大家。
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
macchen
初階會員 發表:66 回覆:102 積分:33 註冊:2006-07-07 發送簡訊給我 |
嗯嗯,謝謝回覆,我會再找找資料看看,先清楚觀念再來想問題,謝謝。
===================引 用 jcjroc 文 章=================== 舒馬克,法拉利那些都是廢話............ 給你那些API如果你夠仔細,網路上一堆範例與應用說明....... 只處理一份資料0.5秒跟5秒之差是會死喔!!!但如果一次要處理一萬份那真的會死.......... 也就那麼零點幾秒.......所以客戶買你的產品!!! 記憶體映射有太多的應用價值.......徹底了解它百利無弊............. 給你個文章隨便看一看吧!!雖然應該沒幫助!!! http://www.softhouse.com.cn/news/show/63183.html
------
DELPHI初學者 |
macchen
初階會員 發表:66 回覆:102 積分:33 註冊:2006-07-07 發送簡訊給我 |
非常感謝aftcast的回覆,我切thread的部份與比對的部份程式碼都有貼上了,我不知這樣說會不會很麻煩,因為code的部份我可能也不知能改什麼地方,只能先從各位指導小弟的部份先看看,有沒有什麼地方可以調整,目前也不確定到底切成多個thread來跑會不會比用memorystream的方式來的快了,只能說先試試,畢竟小弟對這個還真的不是很熟悉,感謝各位願意花時間幫小弟。
===================引 用 aftcast 文 章=================== To Macchen: 昨天我和一位朋友問了一下你的問題,他剛好做的工作與你接近,他是六核拆成四條thread,使用TBitmap來比對,速度比一條快不少。感覺上會不會是你的演算法上有一些問題 ? 是否詳細的看一下你拆解的部份。 嗯,這個我也試過了,問過寫vc的人,他們也沒有指定,就會跑到100%(多核也都是100%)。 至於是否使用bitmap的檔案的結構來比較…建議是等你多核分配有達成效能提昇後,再進一步考慮改寫比對方式。以我朋友的數據來說,他一thread跑 0.7 四thread 則跑 0.25秒…這種倍數的成長應該才是比較明顯的。 理論上我用mainthread只有單核效率100%,所以才想切成多核(因為寫vc的同事切成多核跑圖效果有明顯改善),但是有請同事看過,他覺的演算法的部份應該沒錯,只是為什麼時間會變的比較久,他不了解delphi也說不出個所以然來。 恕刪,謝謝。
------
DELPHI初學者 |
macchen
初階會員 發表:66 回覆:102 積分:33 註冊:2006-07-07 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |