Node.js 核心的大多数代码都是使用 JavaScript 实现的。当应用启动时,Node.js 首先创建 V8::Isolate,其次是 V8::Context,接着才是 node::Environment。然后准备创建 process 对象,以及其它对象,然后运行 bootstrap_node.js 设置运行环境。只有执行完上述所有的任务后,Node.js 才开始运行用户脚本。 所有这一切都会造成启动性能的损失。有一个不严谨的比较:执行 d8 -e "" 代码,D8(V8 的开发版 shell)需要大约 50 毫秒, 而高端工作站的 Node.js,执行 node -e "" 却需要 400 毫秒。 V8 的启动快照(startup snapshot)是可以提升创建 V8 isolate 和 V8 contexts 的效率。它由两个部分组成:isolate 快照和 context 快照。 而 V8 启动快照 也不是什么新鲜玩意,早在 2015 年就已经被 V8 采用。简而言之,使用快照就不需要再从头开始建立 isolate,V8 可以简单地把之前序列化的 isolate 对象图进反序列化就可以了。这同样适用于 context 快照。这样一来,V8 能够显著加快启动。 Node.js 也得益于创建一个新的 isolate 和新的 context。然而,启动过程中的后续步骤并不是快照的一部分,因此导致明显的开销。如果我们能创建 Node.js 已全面启动的快照,但此时还没有开始执行任何用户脚本,那么我们就可以减少启动时间。简单做一下评估,大概可以高达 8 倍。详细内容本次专辑会为您慢慢道来…… 多年来,Facebook 开发团队一直都在创建新的软件和硬件,随后又将其技术传递给开源社区,让大家学习使用。 现在,Facebook 又宣布开源其模块化网络路由软件 Open/R。 Open/R 是一个分布式网络应用平台,于 2016 年发布,作为所有运行于 Terragraph 上的硬件的软件基础,提供了一个测试更快、更有效的新型路由程序的框架,引导数据的高速流转,给予开发者们充分的灵活性。 Open/R 目前仅限 Facebook 内部使用,但官方表示希望能与其他运营商合作,扩展该工具的功能。Open/R 开源之后,其他开发人员可以任意使用,甚至能挖掘出 Facebook 没有想到的功能,发挥更强大的作用,开发团队表示:想想就刺激。更多内容,大家请关注本次专题…… 前不久发布的 Java 9 除了发布了重大更新外,还公布了一个全新版本的发布计划。该计划基于 JEP 223,用于未来 Java 平台版本的发布。然后,在这个全新版本发布计划公布后,Java 首席架构师 Mark Reinhold 随即做出了要对计划进行更改的提议,决定采用严格的,基于时间的发布模式。 基于 JEP 233 的发布计划的主要目标如下所示:版本号直观,易于理解;与当前行业的实际情况相一致;能兼容现有的包系统和平台部署机制;避免在版本的一种元素中编码两种信息;提供一个简单 API,用于版本号的解析、验证和比较更多内容请关注本次专辑…… |