javascript為什么不像java一樣直接事先編譯成字節碼然后跑在v8上?
js到v8 其實已經沒有虛擬機字節碼這層了,直接編譯成cpu指令了,這也是v8快的核心。java反而多出一層虛擬機指令。
但js本質還是有很多動態語言特性,動態語言因為無法提前固化變量類型,就會多出不少處理成本。
一旦編譯完成,第一次運行的代碼會有緩存成cpu的指令,一旦緩存java的也會繞過虛擬指令,所以到這個階段,單純就cpu指令而言,沒有啥區別。包括馬上推出的php8也是如此。
但復雜在每個語言優化程度,和對動態部分解析有差異,而造成實際的速度還是有區別。從這點來說,java沉淀的時間更久,強語言特性也沒有歷史負擔,所以java在運行后會顯得更快一些。
上一篇app前端開發用什么語言
下一篇什么是靜態HTML