精華區beta CSSE 關於我們 聯絡資訊
※ 引述《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