精華區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 這樣。 : (這中間當然會有一些問題需要解決,方法也有很多種,有興趣可以去看相關的 paper) : 不過實際上還是要看你所使用的 JVM 有沒有做這些 optimization @_@ 這個問題基本上跟java這個程式語言沒啥關係 跟compiler和vm比較有關 他們的實作可以有很大的影響 C程式其實也可以做類似的最佳化 你可以去看openMP 這提供一些hint可以加在c的程式裡 幫助compiler做多cpu的最佳化 (印象中gcc和intel's compiler都有支援) 但是這要人去加hint 所以不算全自動 如果程式是跑在vm上 還有一個優勢是可以做dynamic profiling 可以做最佳化作的更徹底 可以比單靠compiler去做還要好 這也是新版的java vm performance越來越好的其中一個原因 google JIT 會有很多資訊 但是這也不是java獨有的優勢 只要是有vm的都可以做 .net perl python ruby php ... 都可以去做 如果這種自動的多cpu最佳化 想要跟語言扯在一起 比較有優勢的應該是functional lang. 因為他們沒有side effect的特性 要自動做多cpu的最佳化會簡單許多 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.42.162