Re: [請益] java的效能!?
這個問題10年前問還有道理, 沒想到2011年了還有人問..
Java效能的最佳化是一門學問, 事實上, 越是新, 越是結構複雜的語言, 效能的最佳化就
越是學問, 因為你可能錯過越多的細節.
Java效能的瓶頸多在I/O, 資料需要頻繁地進出VM, marshalling. 為了I/O效能, 你可以
使用JNI, JNI本來就是Java考量所在; 相反的,若為了彈性或簡潔, 你也可以在Java裡執行
Java Script. 這些東西都提供你做選擇.
但如果你在不需要I/O的地方也使用JNI, 效能會不會比較好? 不會, 因為bytecode執行前
己由JIT-compiler轉成native code, 如果是簡單的運算, compile出來的指令其實差不多
, 效能當然也跟C 做出的結果差不多, 這道理就如同簡單的運算, C 與 ASM 做出的結果也
會差不多. 因此堅持用JNI反而效能會比較差, 而且失去原本 Write Once, Run Anywhere
的特色, 每種平台都需要再寫專屬的 libary.
最後提一下, 有些人至今都無法接受, Java執行的速度可能比C做出來的快, 但這種情況
是真實存在的.
前面有人提到, 如果Java要更快, 只能在演算法的地方贏過. 但事實上VM裡己內建好了各
式各樣的演算法, 要看見他們的優勢, 只需選擇在適當的場合應用即可.
2009, 這裡有人對C, Java, C#去測試一些 "小型" 程式的效能, 參考看看
http://reverseblade.blogspot.com/2009/02/c-versus-c-versus-java-performance.html
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.43.9.124
→
05/22 12:34, , 1F
05/22 12:34, 1F
推
05/22 13:17, , 2F
05/22 13:17, 2F
→
05/22 13:17, , 3F
05/22 13:17, 3F
→
05/22 13:18, , 4F
05/22 13:18, 4F
→
05/22 13:18, , 5F
05/22 13:18, 5F
→
05/22 13:31, , 6F
05/22 13:31, 6F
→
05/22 13:33, , 7F
05/22 13:33, 7F
→
05/22 13:34, , 8F
05/22 13:34, 8F
→
05/22 13:35, , 9F
05/22 13:35, 9F
→
05/22 13:35, , 10F
05/22 13:35, 10F
→
05/22 13:36, , 11F
05/22 13:36, 11F
→
05/22 13:37, , 12F
05/22 13:37, 12F
→
05/22 13:38, , 13F
05/22 13:38, 13F
→
05/22 13:39, , 14F
05/22 13:39, 14F
→
05/22 13:40, , 15F
05/22 13:40, 15F
→
05/22 13:41, , 16F
05/22 13:41, 16F
推
05/22 13:52, , 17F
05/22 13:52, 17F
→
05/22 13:53, , 18F
05/22 13:53, 18F
→
05/22 13:59, , 19F
05/22 13:59, 19F
→
05/22 14:47, , 20F
05/22 14:47, 20F
→
05/22 15:20, , 21F
05/22 15:20, 21F
→
05/22 15:20, , 22F
05/22 15:20, 22F
→
05/22 15:21, , 23F
05/22 15:21, 23F
→
05/22 15:26, , 24F
05/22 15:26, 24F
討論串 (同標題文章)