js到v8 其实已经没有虚拟机字节码这层了,直接编译成cpu指令了,这也是v8快的核心。java反而多出一层虚拟机指令。
但js本质还是有很多动态语言特性,动态语言因为无法提前固化变量类型,就会多出不少处理成本。
一旦编译完成,第一次运行的代码会有缓存成cpu的指令,一旦缓存java的也会绕过虚拟指令,所以到这个阶段,单纯就cpu指令而言,没有啥区别。包括马上推出的php8也是如此。
但复杂在每个语言优化程度,和对动态部分解析有差异,而造成实际的速度还是有区别。从这点来说,java沉淀的时间更久,强语言特性也没有历史负担,所以java在运行后会显得更快一些。
javascript为什么不像java一样直接事先编译成字节码然后跑在v8上 – PHP基础 – 前端 php curl 大量并发