Re: [討論] Java 的 Compiler (非Interpreter)
藉這個標題發問一下
我在 Ubuntu Linux 安裝了 gcj, 想要知道 java 在不依靠 jvm
的執行效能如何
以下是我的測試程式碼:
class test {
public static void main(String[] args)
{
long beginTime = System.currentTimeMillis();
for(int i = 0; i < 100000; ++i)
{
for(int j = 0; j < 100000; ++j)
{
for(int k = 0; k < 100000; ++k) { }
}
}
long endTime = System.currentTimeMillis();
System.out.println("Total Spends " +
(endTime - beginTime) + " milliseconds");
return;
}
}
(jdk 是採用 OpenJDK)
我的測試目標有四個, 分別是
(1) 使用 javac 編譯成 .class, 並且採用 java 執行
(2) 利用 gcj 編譯成 .class, 並且採用 java 執行
(3) 利用 gcj 編譯成 executable(採用 libgcj.so), 直接執行
(4) 利用 gcj 編譯成 executable(採用 libgcj.a), 直接執行
檔案大小以及測試結果如下:
(1) 檔案大小:813 bytes 結果:Total Spends 10367 milliseconds
(2) 檔案大小:769 bytes 結果:Total Spends 6914 milliseconds
(3) 檔案大小:11022 bytes 結果: 太久沒跑出來過...
(4) 檔案大小:40169122 bytes 結果: 太久沒跑出來過...
請問這樣的結果是正常的嗎??
ps. 1. 有仿照上面的 java 寫了一段 c, 同樣太久沒跑出來過
2. 如果使用 file 去察看 (4) 所產生的檔案, 會得到
test_static: ELF 32-bit LSB executable, Intel 80386,
version 1 (SYSV), dynamically linked (uses shared libs),
for GNU/Linux 2.6.15, not stripped
但是我在編譯時已有明確指定 --static-libgcj 並且與 libgcj.a 作
了連結. 為什麼還是 dynamically linked 呢??
3. 原 po 給的 JNC 連結下載下來似乎還是 gcj??
※ 引述《shrekwang (史瑞克)》之銘言:
: Oracle 發行的 Java 工具裡面
: 似乎只有 interpreter
: 所以花點時間尋找 Java 的 compiler
: 不再依賴 JRE
: 目前找到有兩個
: 一個叫 Java Native Compiler(簡稱JNC)
: http://jnc.mtsystems.ch/
: 依照網頁說法好像支援 Java 1.5 (1.6我沒測試)
: 另外一個就是 GNU 計畫的 GCJ
: http://gcc.gnu.org/java/
: 請問各位大大還有沒有其他的 compiler 可以用???
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.217.10
※ king19880326:轉錄至看板 Linux 12/26 23:02
→
12/27 01:30, , 1F
12/27 01:30, 1F
→
12/27 01:33, , 2F
12/27 01:33, 2F
推
12/27 02:01, , 3F
12/27 02:01, 3F
→
12/27 11:48, , 4F
12/27 11:48, 4F
→
12/27 12:05, , 5F
12/27 12:05, 5F
推
12/27 12:48, , 6F
12/27 12:48, 6F
推
12/27 12:50, , 7F
12/27 12:50, 7F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):