跳到主要内容

14 篇博文 含有标签「内部机制」

查看所有标签

增强版 V8,支持可变堆数字

· 阅读需 6 分钟
[Victor Gomes](https://twitter.com/VictorBFG),位移大师

在 V8 中,我们始终致力于提升 JavaScript 性能。作为此项工作的一个部分,我们最近重新审视了 JetStream2 基准测试套件,以消除性能瓶颈。本篇文章详细介绍了我们进行的一项优化,该优化使 async-fs 基准测试的性能提升了显著的 2.5 倍,并对整体得分产生了显著影响。这项优化源于基准测试,但类似的模式确实存在于 真实代码中。

为C++改造时间内存安全

· 阅读需 11 分钟
Anton Bikineev, Michael Lippautz ([@mlippautz](https://twitter.com/mlippautz)), Hannes Payer ([@PayerHannes](https://twitter.com/PayerHannes))
备注

注意: 本文最初发布在Google安全博客

Chrome的内存安全是一个持续不断的努力,以保护我们的用户。我们不断尝试使用不同的技术以超越恶意行为者。在这种精神下,这篇文章介绍了我们使用堆扫描技术来改进C++的内存安全的旅程。

令人惊叹的快速解析,第1部分:优化扫描器

· 阅读需 12 分钟
Toon Verwaest([@tverwaes](https://twitter.com/tverwaes)),高效优化专家

为了运行JavaScript程序,需要对源代码进行处理,使V8能够理解它。V8首先将源代码解析为抽象语法树(AST),即表示程序结构的一组对象。这些AST随后会由Ignition编译成字节码。这些解析+编译阶段的性能很重要:V8在完成编译之前无法运行代码。在这一系列的博客文章中,我们专注于解析以及V8为实现快速解析器所做的工作。

垃圾话:Orinoco垃圾回收器

· 阅读需 13 分钟
Peter “垃圾” Marshall ([@hooraybuffer](https://twitter.com/hooraybuffer))

在过去的几年里,V8垃圾回收器(GC)发生了很大的变化。Orinoco项目将一个顺序的、全停式的垃圾回收器转变成了一个大部分并行和并发的回收器,具备增量回退功能。

在V8中实现排序

· 阅读需 18 分钟
Simon Zünd ([@nimODota](https://twitter.com/nimODota)),一致的比较器

Array.prototype.sort是V8中最后几个用自托管JavaScript实现的内置函数之一。移植它为我们提供了实验不同算法和实现策略的机会,并最终在V8 v7.0 / Chrome 70中让它变得稳定

‘JavaScript代码覆盖率’

· 阅读需 10 分钟
‘Jakob Gruber ([@schuay](https://twitter.com/schuay))’

代码覆盖率提供了应用程序的某些部分是否已被执行的信息,甚至可以选择提供这些部分被执行的频率信息。它通常用于确定测试套件对特定代码库的覆盖程度。

为什么它有用?

作为JavaScript开发人员,您可能经常会遇到代码覆盖率能够派上用场的场景。例如:

  • 对您的测试套件质量感兴趣吗?在重构一个大型遗留项目?代码覆盖率可以确切地显示代码库中哪些部分被覆盖。
  • 想快速知道代码库的特定部分是否被触及?替代使用console.log进行printf-风格的调试或手动逐步执行代码,代码覆盖率可以即时显示应用程序中哪些部分已被执行。
  • 或者您正在优化性能并希望知道应集中在哪些区域?执行次数可以指出热点函数和循环。

Orinoco:年轻代垃圾回收

· 阅读需 8 分钟
乌兰·德根巴耶夫、迈克尔·利普奥茨和汉内斯·派尔,[TSAN](https://github.com/google/sanitizers/wiki/ThreadSanitizerCppManual)的朋友们

在V8中,JavaScript对象被分配到由V8垃圾回收器管理的堆上。在之前的博客文章中,我们已经讨论了如何减少垃圾回收暂停时间不止一次)以及内存消耗。在这篇博客文章中,我们介绍了并行Scavenger,这是V8的主要并发和并行垃圾回收器Orinoco的最新功能之一,并讨论了设计决策以及我们实施的一些备选方法。