作者leicheong (睡魔)
看板CSSE
標題Re: [問題] 隨便Java寫的程式在core duo一定比單核 …
時間Sat Jul 7 09:20:55 2007
※ 引述《byshen (sby)》之銘言:
: ※ 引述《RichieRich (Richie)》之銘言:
: : 早上跟老闆說程式要最佳化才會比較快
: : 老闆說java不管如何寫 jvm本身就會最佳化
: : 請問java jvm真得可以把單線程的程式在雙cpu下跑得比單cpu快?
: 是有可能會比較快,有不少 paper 有在研究 multi-core 環境下的 JVM,
: 例如在沒用到的 core 執行一個 helper thread 去做 data prefetching
: 來降低 cache miss rate,
這是真的.
: 或者想辦法把一個 loop 拆成好幾個 threads 去執行,
: 例如一個 for i = 1 to N 的 loop,可以變成 N 個 threads 這樣。
這個不可以啊...
例如:
String temp = "";
for (i=1;i<=N;i++)
{
temp += "*";
System.out.println(temp);
}
這個分拆在不同CPU跑的話結果就可能不一樣了. 可是要跨CPU做state sync.
的話, 那不是跑得更慢嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 202.134.126.84
※ 編輯: leicheong 來自: 202.134.126.84 (07/07 09:21)
→ byshen:這種 case 當然不需要阿,不是每種情況都適合拆開 loop 的 07/07 09:40
推 byshen:就算適合也需要看你所說的sync的overhead是否小於能獲得的 07/07 09:45
→ byshen:benefit,當然是在覺得有好處的情況下才會做這些事 @_@ 07/07 09:45
→ byshen:我前面只是舉例一些我看過的optimization方式而已。 07/07 09:51
→ byshen:細節部份有興趣可以去找相關的paper研究。 07/07 09:55
推 rexrainbow:loop間有資料相依性 07/07 10:42
→ Coyote:這就是compile時下opt參數會跑很久的原因 07/07 12:44
→ Coyote:他要去了解能不能做opt 這不是件容易的事啊 07/07 12:46