Google的JavaScript和WebAssembly开源引擎V8,经过了十年之后,终于迎来与名称相同的V8版本,这个版本主要改进了引擎的性能,针对内存的容量以及执行速度进行优化,开发团队解释,之所以能减少内存用量,是因为对指标(Pointer)进行压缩。这个版本的V8引擎将在Chrome 80稳定版中使用。
V8的堆(Heap)包含了各种项目,诸如浮点数值、字符串字符、编译程序代码和标记值(Tagged Value),标记值内容又包括了指向V8堆的指标以及小整数(Small Integer),而V8开发团队审查了这些标记值,发现这些值占据了大部分堆内存的容量。标记值与系统指标大小一样,32进制架构就是32进制,而64进制架构便是64进制,比较32进制版本与64进制版本,每个标记值使用两倍的堆内存。
由于指标的高进制可从低进制计算而来,如此便只要在堆内存中存储独特的低进制,平均就可节省40%的堆内存。开发团队提到,通常要改进内存用量,需要拿性能当作代价,但经指标压缩后,不只内存使用量获得改进,连实际网页执行与垃圾回收时间也同时也获得改进。
在桌面浏览器,V8整体执行脸书网页时间减少8%,垃圾回收时间减少10%,移动设备浏览器执行脸书网页,垃圾回收时间减少了17%。在CNN网站的表现,桌面浏览器虽然整体执行时间只减少3%,但是垃圾回收时间却减少14%,且在移动设备的表现更好,V8整体执行时间减少8%,而垃圾回收时间高达20%。