V8 v6.4提升了instanceof
操作符的性能达3.6倍
。经V8’s Web Tooling Benchmark测试,uglify-js比之前快了15-20%。
这个版本也定位了一些Function.prototype.bind
中的性能障碍。
WeakMap和WeakSet现在使用CodeStubAssembler来进行实现,性能提升了5倍
。
经过努力,内置的array性能也得到了提升,通过CodeStubAssembler
重新实现,Array.prototype.slice
的性能提升了约4倍
。此外,Array.prototype.map
和Array.prototype.filter
现在大部分情况下都会被内联,拥有了和手写版本差不多的性能。
We worked to make out-of-bounds loads in arrays, typed arrays, and strings no longer incur a ~10× performance hit after noticing this coding pattern being used in the wild.
V8内置的代码对象以及字节码处理器现在在快照中将会懒式反序列化,这会显著降低每个Isolate的内存消耗。Benchmarks显示在Chrome打开普通网页的时候,每个tab可以节约下几百KB的内存。
添加了两个新的正则表达式功能:
当/u
标识打开的时候,Unicode property escapes将默认启用:
const regexGreekSymbol = /\p{Script_Extensions=Greek}/u;
regexGreekSymbol.test('π');
// → true
对named capture groups的支持将默认启用:
const pattern = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/u;
const result = pattern.exec('2017-12-15');
// result.groups.year === '2017'
// result.groups.month === '12'
// result.groups.day === '15'
更多的细节可以在这篇博文中查看:Upcoming regular expression features。
V8现已实现import.meta,使得嵌入者可以通过该方法暴露当前模块的host-specific metadata
。
新加入的API:Intl.NumberFormat.prototype.formatToParts()可以帮助开发者将数字国际化成需要的符号和类型。
请使用git log branch-heads/6.3..branch-heads/6.4 include/v8.h
来获得API改动的列表。
EOF