[問題] thread會導致程式執行反而變慢嗎?
大家好
最近我寫了一個雙回圈
public static boolean issuperset(String a[], String b[]) {
int tmp = 0;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < b.length; j++) {
if (Integer.parseInt(a[i]) == Integer.parseInt(b[j])) {
tmp += 1;
}
}
}
if (tmp == b.length) {
return true;
} else {
return false;
}
}
總之就是在比較a集合有沒有包含b集合的東東
這段code也是卡在迴圈裡,因為彼此的運算獨立所以想寫成thread
最後只是想統計有幾個事件是[a集合有包含b集合],若超過某個數量則啟動其他事件
就先不管為什麼要特別寫這個脫褲子放屁的東西吧
我想問的問題是
我把這段改寫成thread之後執行發現比原本的執行時間還慢10多倍
輸出結果除了順序之外都是相同的,我應該可以確定程式邏輯沒有寫錯
不同於上例,這些thread額外共享一個類別變數,就是統計[a包含b事件]的總和用的
我把更改類別變數值的method寫成同步化
我用自己的4核心電腦跑,每一個核心都負載45%左右
若是用原本的方式,就會只有一個核心負載100%
當然結果就如上述是單核心的快,而且快很多
請問我有遺漏哪些重點呢?為什麼會這樣?
請各位高手解答,謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.224.49.56
→
03/31 22:36, , 1F
03/31 22:36, 1F
→
03/31 22:39, , 2F
03/31 22:39, 2F
→
03/31 22:40, , 3F
03/31 22:40, 3F
→
03/31 22:47, , 4F
03/31 22:47, 4F
→
03/31 22:49, , 5F
03/31 22:49, 5F
→
03/31 22:51, , 6F
03/31 22:51, 6F
→
03/31 22:53, , 7F
03/31 22:53, 7F
→
03/31 22:54, , 8F
03/31 22:54, 8F
→
03/31 23:00, , 9F
03/31 23:00, 9F
→
03/31 23:15, , 10F
03/31 23:15, 10F
推
04/01 13:56, , 11F
04/01 13:56, 11F
→
04/08 17:22, , 12F
04/08 17:22, 12F
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 4 篇):
java 近期熱門文章
PTT數位生活區 即時熱門文章