Re: [問題] 隨便Java寫的程式在core duo一定比單核 …

看板CSSE (電腦科學及軟體工程)作者 (睡魔)時間18年前 (2007/07/07 09:20), 編輯推噓2(206)
留言8則, 3人參與, 最新討論串4/6 (看更多)
※ 引述《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)

07/07 09:40, , 1F
這種 case 當然不需要阿,不是每種情況都適合拆開 loop 的
07/07 09:40, 1F

07/07 09:45, , 2F
就算適合也需要看你所說的sync的overhead是否小於能獲得的
07/07 09:45, 2F

07/07 09:45, , 3F
benefit,當然是在覺得有好處的情況下才會做這些事 @_@
07/07 09:45, 3F

07/07 09:51, , 4F
我前面只是舉例一些我看過的optimization方式而已。
07/07 09:51, 4F

07/07 09:55, , 5F
細節部份有興趣可以去找相關的paper研究。
07/07 09:55, 5F

07/07 10:42, , 6F
loop間有資料相依性
07/07 10:42, 6F

07/07 12:44, , 7F
這就是compile時下opt參數會跑很久的原因
07/07 12:44, 7F

07/07 12:46, , 8F
他要去了解能不能做opt 這不是件容易的事啊
07/07 12:46, 8F
文章代碼(AID): #16Zkfu8g (CSSE)
討論串 (同標題文章)
文章代碼(AID): #16Zkfu8g (CSSE)