报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

微软 JS 引擎升级:引入二段式编译过程

  • 2014-10-19
  • 本文字数:967 字

    阅读完需:约 3 分钟

微软的 Internet Explorer 团队最近详细介绍了即将在Windows 10 中出现的JavaScript 引擎所引入的变化。其中一个意义深远的变化是,在JIT(Just-in-Time)编译器中增加了一个新的阶段。

JS 引擎 Chakra最早出现在IE9 中,为Internet Explorer 以及从微软应用商店中下载的基于Web 的应用提供服务。当运行JavaScript 中函数时,Chakra 首先使用解析器,以缓慢但灵活的方式解释执行。而一旦当某个函数或循环变得“炙手可热”,Chakra 便将使用其 JIT 编译器来生成经过优化的机器代码。

在 Windows 10 中,Chakra 将增加第二个 JIT 编译器,它将填补缓慢的、解释执行的代码,与快速、经过优化的代码之间的鸿沟。这个新增的中段编译器被称为 Simple JIT(简化的 JIT),它将作为一个“足够好”的中间层,能够比 Full JIT(完整的 JIT)更快速地将代码执行从解析器中移出。微软宣称这一变化将令特定的工作负载“运行速度提升最多 30%”。

这个 Simple JIT 将不会采用复杂的优化生成代码。在大部分情况下,Simple JIT 编译代码所化的时间,将远小于 Full JIT 编译器生成高度优化的 JIT 代码所需的时间。

除微软外,其他一些浏览器早已完成了转向两段式 JIT 编译器架构的过程。Firefox 的 JS 引擎 SpiderMonkey 拥有一个解析器和两个编译器,名为 Baseline 和 IonMonkey。 Baseline 编译器最初现身于 Firefox 23,负责与 Chakra 中的 Simple JIT 编译器类似的中间步骤。而在 Google Chrome 浏览器的 V8 JS 引擎早在 2010 年就已经公布了它的两段式编译系统,不过 V8 并未引入解析器。

除了引入新的 JIT 编译器外,Chakra 现在还将把代码编译工作划分给若干后台线程。而在此之前,它只有一个后台线程。

现在,一旦发现自身运行的环境中,硬件的性能可能未被充分利用,Chakra 就能够为 JIT 编译开启若干并发的后台线程。与之相对照的,V8 引擎目前在单一一条后台线程上编译

受Web 天生条件制约,JavaScript 代码无法提前编译;因此,编译过程必须发生在客户侧。Firefox 的第一个版本提供了一套JS 原生代码JIT 编译器( 3.1 版);Internet Explorer 在 IE9 中才引入该特性;而 V8 则在问世之日起就采用这样的 JIT 编译器。

微软目前将全新 Internet Explorer 作为 Windows 10 技术预览版中的一部分对外发布。

查看英文原文: Microsoft’s JavaScript Engine Learns New Tricks For Windows 10

2014-10-19 13:081877
用户头像

发布了 256 篇内容, 共 77.5 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

很有意思的两个测试面试题

老张

YashanDB共享集群助力高端应用场景1:1平替

极客天地

PPT下载 | 构建数据价值高速路--DataOps的应用实践与前沿探索

数造万象

数据治理 数据开发 科技 DataOps

零售企业的“智慧大脑”:配补调系统为何不可或缺?

第七在线

鸿蒙系统中的像素单位与API使用详解

彭康佳

android 鸿蒙 分辨率

软件测试学习笔记丨Linux系统与shell环境准备

测试人

软件测试

什么是自动化测试框架?

测吧(北京)科技有限公司

测试

为什么要使用 YAML 文件?

测吧(北京)科技有限公司

测试

京东JD商品详情API返回值研究:商品数据与电商用户体验优化

技术冰糖葫芦

API Explorer API 接口 API 策略

TDengine Open Day 成功举办:洞察技术革新与职场策略!

TDengine

数据库 tdengine 时序数据库

淘宝搜索API返回值分析:关键字搜索在电商领域的应用价值

技术冰糖葫芦

API Explorer API 接口 API 策略 pinduoduo API

深度解析:国有企业数字化转型的背景、现状与思路

优秀

数字化转型 央国企数字化转型 国企数字化转型

和鲸101领航:ModelWhale助航遥中心改革AI科研范式

ModelWhale

人工智能 大数据 遥感应用

业界领先的多核异构框架RTONBOOT介绍

winfredy

无人机 机器人 工业自动化 3D打印 精密运动控制

Python dataclass 基本使用指南

测吧(北京)科技有限公司

测试

湖仓一体全面开启实时化时代

Apache Flink

大数据 flink paimon streaming lakehouse

和鲸101领航:跨学科实训赋能人大数据人才培养,共推新文科建设

ModelWhale

大数据 中国人民大学 新文科

大模型建设赋能再升级 大模型基础设施高质量发展研讨会圆满成功

中国信通院AI Infra工作组

简单的限流过滤器

不在线第一只蜗牛

想做物联网卡系统 是因为不想忍

开源物联卡管理平台-设备管理

物联网 IoT eSIM安全 java 技术提升

中国信通院启动科学智能(AI4S)产业图谱编制工作

中国信通院AI Infra工作组

软件测试学习笔记丨Bash编程语法

测试人

软件测试

Python 数据类嵌套详解

测吧(北京)科技有限公司

测试

深入解析单元测试框架如何构建可靠代码的基石

测吧(北京)科技有限公司

测试

会议通知|大模型基础设施高质量发展专题研讨会

中国信通院AI Infra工作组

多款可观测产品全面升级丨阿里云云原生 5 月产品月报

阿里巴巴云原生

阿里云 云原生 可观测

这么简单的问题都不会,那还面试什么!?

王中阳Go

Go 面试 面试题 面经 Go进阶

微软JS引擎升级:引入二段式编译过程_JavaScript_David Iffland_InfoQ精选文章