V8 JavaScript引擎

news2025/1/16 5:48:54

简介

V8 (v8.dev)是 Google 的开源高性能 JavaScriptWebAssembly 引擎,用 C++ 编写。它用于 ChromeNode.js 等。它实现了 ECMAScript 和 WebAssembly,并运行在 Windows 7 或更高版本、macOS 10.12+ 以及使用 x64、IA-32、ARM 或 MIPS 处理器的 Linux 系统上。 V8 可以独立运行,也可以嵌入到任何 C++ 应用程序中

V8是为谷歌Chrome提供动力的JavaScript引擎的名称。它使用我们的JavaScript并在使用Chrome浏览时执行它。

V8提供了JavaScript执行的运行时环境。DOM和其他Web平台API由浏览器提供。

最酷的是JavaScript引擎独不依赖于浏览器。这就推动了Node.js的兴起。早在2009年,V8就被选为Node.js引擎,随着Node.js流行的激增,V8成为了现在为大量用JavaScript编写的服务器端代码提供动力的引擎。

Node.js的生态系统是巨大的,这要归功于V8,它也为桌面应用程序提供了动力,比如Electron等项目。

其他js引擎

  • Firefox 使用SpiderMonkey

(https://spidermonkey.dev/)

SpiderMonkey是Mozilla的JavaScript和WebAssembly引擎,用于Firefox,Servo和其他各种项目。它是用C++,Rust和JavaScript编写的。你可以将它嵌入到 C++ 和 Rust 项目中,并且可以作为一个独立的 shell 运行。

  • Safari 使用的是JavaScriptCore(也称为Nitro

(https://developer.apple.com/documentation/javascriptcore)

JavaScriptCore 框架提供了从 Swift、Objective-C 和基于 C 的应用程序评估 JavaScript 程序的能力。您还可以使用 JavaScriptCore 将自定义对象插入到 JavaScript 环境中。

  • Edge 之前使用的是Chakra但最近使用ChromiumV8引擎进行了重构。

所有这些引擎都实现ECMA-262标准,也称为ECMAScript,这是JavaScript使用的标准。

追求性能

V8是用C++编写的,并且不断改进。它是可移植的,可以在Mac、Windows、Linux和其他几个系统上运行。

在本次V8简介中,我们将忽略V8的实现细节:它们可以在更权威的网站(例如V8官方网站)上找到,而且它们会随着时间的推移而变化,通常会发生根本性的变化。

V8一直在发展,就像周围的其他JavaScript引擎一样,以加快Web和Node.js生态系统的速度。

在网络上,性能竞争已经持续了多年,我们(作为用户和开发人员)从这场竞争中受益匪浅,因为我们年复一年地获得更快、更优化我们的机器。

编译

JavaScript通常被认为是一种解释语言,但现代JavaScript引擎不再只是解释JavaScript,而是编译它

自2009年SpiderMonkey JavaScript编译器被添加到Firefox 3.5中以来,这种情况一直在发生,每个人都遵循了这个想法。

JavaScript由V8内部编译,采用实时(JIT)编译来加快执行速度。

这似乎有违直觉,但自2004年谷歌地图推出以来,JavaScript已经从一种通常执行几十行代码来完成应用程序的语言演变而来,浏览器中运行着数千到数十万行代码。

我们的应用程序现在可以在浏览器中运行数小时,而不仅仅是一些表单验证规则或简单的脚本。

在这个新的世界里,编译JavaScript是非常有意义的,虽然可能需要更多时间才能准备好 JavaScript,一旦完成,它将比纯解释代码更具性能。

实际上就是采用编译之后,就类似后端语言了,先编译,然后再执行,我们把代码前期把代码编译好,在正式执行的时候,速度会有很大的提升,这样用户等待时间就更短了,体验也会更好

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/501339.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FFmpeg HEVC 解码 YUV

1. 概要与流程图 1.1 FFmpeg 支持 h264,hevc 等解码,由于分离视频文件为 hevc 格式,为了方便起见,当前解码的格式为 hevc,代码支持各种视频格式解码,需要修改参数和适配 1.2 HEVC 解码 YUV 流程图如下: 2. 封装读写文件操作 2.1 读写头文件,FileTool.h #import <Fou…

MAC常用操作

1. 添加环境变量 vi ~/.bash_profile export PATHselfdefine_path:$PATH source ~/.bash_profile适用于安装Application之后将该Application的Contents/bin下的可执行程序添加到环境变量&#xff0c;使得在终端能够启用。 例如使用cmake-3.25.0-macos-universal.dmg安装好cmak…

基于微信小程序网上书城系统

开发工具&#xff1a;IDEA、微信小程序 服务器&#xff1a;Tomcat8.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 前端技术&#xff1a;vue、uniapp 服务端技术&#xff1a;springspringmvcmybatis(ssm框架) 本系统分微信小程序和管理后…

双向链表(数据结构)(C语言)

目录 概念 带头双向循环链表的实现 前情提示 双向链表的结构体定义 双向链表的初始化 关于无头单向非循环链表无需初始化函数&#xff0c;顺序表、带头双向循环链表需要的思考 双向链表在pos位置之前插入x 双向链表的打印 双链表删除pos位置的结点 双向链表的尾插 关…

Windows命令提示行使用指南一

命令提示行使用指南 前言一、起源和发展二、和DOS的关系三、常用命令 前言 cmd 是 Windows 操作系统中的命令行界面&#xff08;CLI&#xff09;&#xff0c;也称为命令提示符&#xff08;CMD&#xff09;或批处理文件。它是 Windows 命令行界面的主要组成部分&#xff0c;用于…

《Linux 内核设计与实现》07. 中断和中断处理

文章目录 注册中断处理程序释放中断处理程序编写中断处理程序共享的中断处理程序中断例程实例 中断上下文/proc/interrupts中断控制禁止和激活中断禁用指定中断线中断系统的状态 注册中断处理程序 // 分配一条给定的 irq 中断线 request_irq(unsigned int irq, irq_handler_t …

『python爬虫』13. 视频地址防盗链实战案例(保姆级图文)

目录 1. 寻找视频真实url地址&#xff08;视频地址被加密了&#xff09;2. 防盗链中的来源判断完整代码总结 欢迎关注 『python爬虫』 专栏&#xff0c;持续更新中 欢迎关注 『python爬虫』 专栏&#xff0c;持续更新中 1. 寻找视频真实url地址&#xff08;视频地址被加密了&am…

【刷题笔记】不要二+把字符串转换为整数

一、不要二 题目&#xff1a; 牛客网链接&#xff1a;不要二_牛客题霸_牛客网 描述 二货小易有一个W*H的网格盒子&#xff0c;网格的行编号为0~W-1&#xff0c;网格的列编号为0~H-1。每个格子至多可以放一块蛋糕&#xff0c;任意两块蛋糕的欧几里得距离不能等于2。 对…

camunda表达式如何使用

在Camunda中&#xff0c;表达式是一种灵活的方式&#xff0c;可以用于在流程定义和表单中计算和处理数据。表达式可以在Camunda的各个环节中使用&#xff0c;例如服务任务、网关、表单、条件等。 以下是Camunda表达式的一些常见用途&#xff1a; 1、计算值&#xff1a;表达式可…

腾讯云轻量16核32G28M带宽服务器CPU流量性能测评

腾讯云轻量16核32G28M服务器3468元15个月&#xff0c;折合每月231元&#xff0c;28M公网带宽下载速度峰值可达3584KB/s&#xff0c;折合3.5M/秒&#xff0c;系统盘为380GB SSD盘&#xff0c;6000GB月流量&#xff0c;折合每天200GB流量。腾讯云百科来详细说下腾讯云轻量应用服务…

SeaweedFS学习笔记:架构和快速入门

目录 1. 介绍1.1 Components1.2 Master 服务1.3 Volume 服务1.4 Filer服务1.5 S3服务1.6 Volume的概念1.7 Collection的概念 2. 快速入门2.1 安装 SeaweedFS2.2 启动 Master 服务2.3 启动 Volume 服务2.4 快速启动一个Master服务和一个Volume服务2.5 测试 3. 参考 1. 介绍 1.1 …

asp.net汽车保养美容店维修管理系统

本系统汽车预约美容系统分为前台和后台两部分&#xff0c;具体功能如下 前台部分功能 1.注册登录&#xff0c;用户通过注册登录之后可以进行保养和美容项目的预约 2.新闻资讯&#xff0c;查看和汽车保养&#xff0c;美容相关的新闻资讯信息 3.美容查看&#xff0c;查看汽车美容…

6年测开经验,从功能测试到测试开发,每一步都深思熟虑...

蓦然回首&#xff0c;软件测试风风雨雨的这几年&#xff0c;起初每天的工作只是鼠标点点点&#xff0c;我还真不知道怎么办&#xff0c;闲的时候真的怀疑自己的存在价值&#xff0c;每天拿着7000的工资&#xff0c;飘荡在繁华的深圳&#xff0c;吃不饱也饿不死&#xff0c;未来…

【PWN · ret2libc】ret2libc1

ret2libc的第一题 目录 前言 一、动态链接 二、ret2libc原理 三、exp编写 干货 干货一&#xff1a;python下的ELF 干货二&#xff1a;strings看看有没有待选字符串 编写exp 总结 前言 本来是和学习ret2text\ret2shellcode\ret2syscall一样在网上找文字资源&#x…

28从零开始学Java之面向对象和面向过程到底有哪些区别?

作者&#xff1a;孙玉昌&#xff0c;昵称【一一哥】&#xff0c;另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 壹哥相信&#xff0c;经过你对前面文章中技术点的学习&#xff0c;现在的你应该已经对Java具备了初步…

【UE】直升机沿样条线移动

效果 步骤 1. 将虚幻商城中的免费资产导入工程 下载完毕后可以看到如下文件 2. 新建一个Actor蓝图类&#xff0c;命名为“Track”&#xff0c;这个蓝图就是用来画样条线的 打开“Track”&#xff0c;添加样条组件 3. 打开“BP_West_Heli_AH64D” 在事件图表中先新建一个时间轴…

Unity冷知识:读取用户输入应该写在Update还是FixedUpdate里?

Unity冷知识&#xff1a;读取用户输入应该写在Update还是FixedUpdate里&#xff1f; 版权声明&#xff1a; 本文为“优梦创客”原创文章&#xff0c;您可以自由转载&#xff0c;但必须加入完整的版权声明文章内容&#xff0c;不得删减、修改、演绎相关学习资源见文末 一些人…

1.SpringCloud技术

SpringCloud01 1.认识微服务 随着互联网行业的发展&#xff0c;对服务的要求也越来越高&#xff0c;服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢&#xff1f; 1.0.学习目标 了解微服务架构的优缺点 1.1.单体架构 单体架构&#xff…

初识C++之线程库

目录 一、C中的线程使用 二、C的线程安全问题 1. 加锁 2. 变为原子操作 3. 递归里面的锁 4. 定时锁 5. RAII的锁 三、条件变量 1. 为什么需要条件变量 2. 条件变量的使用 2.1 条件变量的相关函数 2.2 wait函数 一、C中的线程使用 线程的概念在linux中的线程栏已经…

9个加密货币交易所被查封,交易所安全审计后仍不安全

美国联邦调查局和乌克兰警方查封了九个加密货币交易网站&#xff0c;这些网站为包括勒索软件参与者在内的诈骗者和网络犯罪分子洗钱提供了便利。 联邦调查局 FBI 在其公告中表示&#xff0c;该行动是在虚拟货币响应小组、乌克兰国家警察和该国法律检察官的帮助下进行的。 此次…