Re: 可行嗎? 原生編譯的 Eclipse

看板Eclipse作者 (!H45)時間17年前 (2007/09/07 12:52), 編輯推噓2(208)
留言10則, 2人參與, 最新討論串3/6 (看更多)
※ 引述《freesamael (燒賣)》之銘言: : 這時我才發現一直被我丟棄在一旁,不太使用的 gcj/gij 竟然有提供把 java source 和 : java bytecode 編譯成機器碼的功能,而且老早就有人把 Eclipse 拿來開刀了。最早 : 這麼做的應該是 Red Hat 的工程師,他們弄了一個 native Eclipse 的專案,後來成為 : Fedora 專案的一部分 - Fedora Eclipse。 (http://sourceware.org/eclipse/) : 我在 Ubuntu Linux 套件庫內也找到 eclipse-gcj,一樣是以 gcj 編譯的 natively- : compiled Eclipse。但是我想試試最新的 Eclipse europa,所以我決定自己編譯一次。 : 其實也沒有想像中的困難,因為有現成的文件。(http://0rz.tw/fd2UX) 老實說,我做了一項簡單的測試,分別以 javac 編譯和 gcj 編譯 結果 javac 編譯的版本效率高過 gcj 編譯的版本高達 2 倍 測試用的程式碼如下: public class Driver { public static void main(String[] args) { long startTime = System.currentTimeMillis(); for (int i=0; i<50000; i++) for (int j=0; j<50000; j++); long endTime = System.currentTimeMillis(); System.out.println(endTime - startTime); } } 第一種編譯並執行: javac Driver.java java Driver 輸出的結果:6469 第二種編譯並執行: gcj --main=Driver Driver.java ./a.out 輸出的結果:11713 結果顯示 gcj 版本比 java 版本執行速度還慢個兩倍左右 測過很多次,誤差大約 ±10%, 所以測試結果應該是沒有問題 請問是我哪邊參數沒設到,還是本來效率就沒有比較高呢? 我的系統: linux kernel: 2.6.22-10 java version "1.6.0_02" Java(TM) SE Runtime Environment (build 1.6.0_02-b05) Java HotSpot(TM) 64-Bit Server VM (build 1.6.0_02-b05, mixed mode) gcj (GCC) 4.2.1 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.248.127.91

09/07 18:36, , 1F
我覺得這種小程式試不太出來吧? Java的bytecode會被
09/07 18:36, 1F

09/07 18:37, , 2F
gcj/gij性能是滿差的,不過我沒有料到編譯之後的執行
09/07 18:37, 2F

09/07 18:37, , 3F
性能也這麼差@@
09/07 18:37, 3F

09/07 18:37, , 4F
我覺得java最麻煩的就是這種short-term application
09/07 18:37, 4F

09/07 18:38, , 5F
現在的jvm對long-term幾乎都可以做到很好的最佳化
09/07 18:38, 5F

09/07 18:38, , 6F
Sun以前的jit或是現在的hotspot都做到一定程度了
09/07 18:38, 6F

09/07 18:37, , 7F
JIT重新處理過, GCJ我還沒試過不清楚.
09/07 18:37, 7F

09/07 18:43, , 8F
換到更大型的program, interpreter跟native compiler
09/07 18:43, 8F

09/07 18:43, , 9F
理論上是native會有較佳速度. 有錯請指正. 謝謝.
09/07 18:43, 9F

09/07 18:44, , 10F
最後謝謝你的資訊. :)
09/07 18:44, 10F
文章代碼(AID): #16uDZyos (Eclipse)
文章代碼(AID): #16uDZyos (Eclipse)