Re: [問題] thread會導致程式執行反而變慢嗎?

看板java作者 (Willie Liao)時間15年前 (2010/04/01 14:02), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
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
文章代碼(AID): #1Bj3SJHZ (java)
文章代碼(AID): #1Bj3SJHZ (java)