v8 7.4支持jit-九游会官网真人游戏第一品牌

v8引擎团队发布最新版7.4,这个版本支持jit -less模式,让javascript不需要可执行内存也能执行,同时还改善了函数调用的效率,也增加内存使用效率。 v8引擎每六个月发布一个v8新版本,而这个最新的v8 7.4将会在几个星期内布署到chrome 74稳定版中。

v8 7.4现在支持在runtime的时候,执行javascript不需要使用可执行的内存。开发团队提到,由于在部分平台像是ios、智能电视以及游戏机台,禁止非特权应用程序写入访问可执行的内存,因此到现在为止,这些平台都无法使用v8引擎,而v8新的jit-less模式解决了这个问题,当使用jitless标签启动v8时,v8可以在没有任何可执行内存分配下执行,v8引擎团队还提到,禁止写入可执行内存,能够减少应用程序的可攻击面。

这个新版本也从各方面改善了执行性能,包括加速参数不相符时的函数调用,而解析器的性能也提高了。在javascript中调用函数的时候,传递少或是多过声明的形式参数是有效的语法,在v8是通过参数适应技术完成这样的功能,但是参数适应技术却会牺牲性能,而且会经常性的在前端以及中介框架发生。

在改进之后,现在引擎于部分情况下,能够知道参数适应技术并非必要,也就是被调用的函数处在严格模式不使用参数,系统无法观察实际参数的时候,而在这种情况下,v8现在会完全跳过参数适应技术,将调用成本降低60%。

而在chrome中,较大的脚本是以串流的方式在worker线程中,边下载边解析,在v8 7.4版本,原始来源串流使用了定制化utf-8解码,可以加速整体解码工作,使得串流解析快了8%。另外,v8引擎团队还在预解析器中,解决了属性名称重复的bug,可以让串流解析器性能提高10.5%,同时也能改进非串流解析脚本的时间。

除此之外,新版v8引擎还改进了内存使用效率,开发团队提到,javascript源码编译的字节码很占空间,约占据v8堆(heap)空间15%,但是其中有许多函示只在初始化期间才会用到,或是编译后被使用的机率很低。为了减少v8内存使用,这些函数的字节码会被标上年龄,并在执行的时候将年龄重置为零,因此当函数年龄超过阈值,在垃圾收集器执行时该字节码就可能被清除。

使用了这个新的字节码回收算法后,v8堆内存使用量明显下降5到15%,而且也不会降低性能,或是明显增加编译javascript程序代码所花费的cpu时间。

发表评论