Re: [問題] thread會導致程式執行反而變慢嗎?
Thread本身有overhead,以這種沒有io/network等待的純記憶體內運算來說
最快的方法是用Thread pool,以原po四核心的電腦
用同樣的四條Thread各運算250次會比開1000條
Thread運算一次或用同一條Thread算1000次要快的多。
※ 引述《yamamura (sadako)》之銘言:
: 大家好
: 最近我寫了一個雙回圈
: 總之就是在比較a集合有沒有包含b集合的東東
: 這段code也是卡在迴圈裡,因為彼此的運算獨立所以想寫成thread
: 最後只是想統計有幾個事件是[a集合有包含b集合],若超過某個數量則啟動其他事件
: 就先不管為什麼要特別寫這個脫褲子放屁的東西吧
: 我把這段改寫成thread之後執行發現比原本的執行時間還慢10多倍
: 輸出結果除了順序之外都是相同的,我應該可以確定程式邏輯沒有寫錯
: 不同於上例,這些thread額外共享一個類別變數,就是統計[a包含b事件]的總和用的
: 我把更改類別變數值的method寫成同步化
: 我用自己的4核心電腦跑,每一個核心都負載45%左右
: 若是用原本的方式,就會只有一個核心負載100%
: 當然結果就如上述是單核心的快,而且快很多
: 請問我有遺漏哪些重點呢?為什麼會這樣?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 76.111.66.205
討論串 (同標題文章)
java 近期熱門文章
PTT數位生活區 即時熱門文章