因為行VM
KinChungE 發表於 2013-4-4 18:23
唔多係 :)

java/.net 唔係永遠都做interpretation o既, 去到某一個位就會 JIT; 響N 年前, JIT 基本上已經同 NATIVE 差唔多快, 有D BENCHMARK 甚至響某D 情況下快D.

Java 唔快O既原因有幾個主要O既, 其中一個係 virtual function call. java 所有野default 都係 virtual , 即係每個 function call 都要做一次type check 同vtable lookup. C++ 如果 virtual function call 都係幾多 overhead 的. 有D researcher 試過寫過D compiler加 VM, 折晒D TYPE, 冇晒virtual call, 快好多.

TOP

唔多係 :)

java/.net 唔係永遠都做interpretation o既, 去到某一個位就會 JIT; 響N 年前, JIT 基本上已經 ...
LoneGumMan 發表於 2013-4-5 00:19


即係慢既原因係dynamic binding?

TOP

提示: 作者被禁止或刪除 內容自動屏蔽

TOP

即係慢既原因係dynamic binding?
KinChungE 發表於 2013-4-5 00:25
當然, interpreter 本身當然有overhead, 但係唔係太大, 尤其當D code JIT 左之後.virtual call o既OVERHEAD 相對幾大架真係, 你每call 一個 function 都要做一大堆野, 個interpreter要做 bookkeeping.

試諗下, 其實直接compile xxx.java 去一個object file (所謂O既native code) 中間都一定有intermediate representation. java / .net 只不過係停左響呢度, 下一個step runtime o既時候先做, 一 compile 左, 咪就係native 囉.

慢有N 咁多個理由喇, 呢度少少果度少少加埋就唔少. JIT 而家基本上已經可以做到 native o既 9x % .. 其實係超級 impressive.

TOP

當然, interpreter 本身當然有overhead, 但係唔係太大, 尤其當D code JIT 左之後.virtual call o既OVERHEA ...
LoneGumMan 發表於 2013-4-5 00:39


換言之, 所有野寫哂落同一個class就會快好多
不過program一大舊就唔得掂

TOP

換言之, 所有野寫哂落同一個class就會快好多
不過program一大舊就唔得掂 ...
KinChungE 發表於 2013-4-5 00:49
據聞如果你 declare 一個 java class "final", 個compiler可以做到 optimization.

同埋, 我頭先所講O既9x%.. 係指 computational performance. 唔係一個大program overall performance

TOP

回復 9# KoolFreeze

Agree!!!

TOP

pointer指d乜?
指function 有function pointer...http://openhome.cc/Gossip/CppGossip/FunctionPointer.html

TOP

無左pointer Binary Tree都寫唔到...
KoolFreeze 發表於 2013-4-3 23:53


學 java 有一份 assignment 就係用 class 寫 binary tree

TOP

RE: C++ 既 pointer 其實有咩用 (新手問題)

學 java 有一份 assignment 就係用 class 寫 binary tree
henrywho 發表於 2013-4-5 08:21


所以咪話java全部野都係pointer囉……

TOP