当前位置: 首页 > 后端技术 > Node.js

为什么JavaScript很快-第1部分?

时间:2023-04-03 10:40:58 Node.js

摘要:V8让JavaScript更快的秘诀;V8的JavaScript执行管道;为什么TurboFan&Ignition升级了NodeJS版本,速度会提高?为什么NodeJS代码启动的时候很慢,运行的时候却运行的比较快?什么是V8JIT?前言V8的产品定义:为现代JavaScript加速现实世界的性能,使开发者能够构建更快的未来网络。最近看了3个V8核心团队的视频。自己看),我打算把3个视频分成3篇文章:?第一个来源,V8团队的产品经理;V8,AdvancedJavaScript,&theNextPerformanceFrontier(GoogleI/O'17)?第二篇第一篇文章的来源,V8的语法分析;解析JavaScript-懒惰胜于急切??第三个来源,V8的编译运行;HowJavaScriptEnginesWork话说完先放结论:V8的执行流水线架构图1.,V8语法解析阶段:JS语法解析速度:约1MB/s;400kJS代码,语法解析需要~370ms通过,检查你的代码的语法解析时间,运行尽可能少的代码:-)2.V8编译阶段:尽量写“静态类型”代码WebAssembly使用TurboFan3,V8JScoding:Async/Await(4.5x)isalmost2timesfasterthanGenerators(2.5x)ES2015越来越接近ES54,V8forNodeJS:异步调试代码:node--inspectapp.js&&chrome://inspect/#devices5,V8forbrowser:Coverage函数,查看运行代码的覆盖率第一篇:为什么是V8?-V8产品经理的描述作为第一篇,我们先看看V8产品经理对V8引擎的看法。全局介绍V8的代码执行管道的架构。作为一个JS引擎,V8的衡量标准不仅要考虑性能提升,还要考虑启动速度和内存占用。V8的产品经理给出了他们衡量V8引擎的模型和V8的使用场景。场景一:只执行一个函数;期望快速开始解析并编译运行;场景二:执行foo函数10000次;在PC浏览器/NodeJS服务器中,期望高性能来运行foo函数;executethefoofunction10,000times;在移动浏览器/NodeJSIoT设备中,期望以低内存和高性能运行foo函数;V8的执行流水线V8如何在快速启动/峰值性能、低内存/高优化内存之前达到任何水平?切换呢?TurboFan(涡轮增压)V8优化编译器,3年多积累?用于提升代码性能?支持和优化Es2015+特性?WebAssembly后台Ignition(点火装置)占用内存小,启动速度快?专为低内存设备设计现在用于所有平台以节省内存;?快速生成二进制代码,提高页面启动速度;?结合TurboFan,让快速启动和性能优化变得更简单;Ignition+TurboFan2017新的JavaScript管道?JS代码更快?更多更少的内存?更新的性能改进?更适合NodeJS?不再默认JS新特性?重写内置函数(最多快4倍)Speedometer2V8更适合用于测试JS基准测试?测试流行的MVC框架TodoList的最新版本?几乎(适度)优化了ES2015的最佳浏览器基准?生成器速度提高了2.5倍?异步/等待速度提高了4.5倍?Promise速度提高了4倍V8loveNodeJSV8是NodeJS委员会的核心成员,不断改进和优化NodeJS性能AcmeAirbenchmarkNodeJSbenchmarkNode+DevTools让调试NodeJS代码变得更容易?启动时添加--inspect参数node--inspectindex.js?调试节点代码通过chrome地址栏中的about:inspect链接?支持异步调试、分析等更多功能CodeCoverage功能,查看哪些代码未被执行WebAssembly安全的跨浏览器原生代码?Chrome和FireFox支持,包括:Edge和Safari未来?通过Emscripten工具链将C/C++编译为web?未来计划:更好的性能;更容易从响应对象t实例化;支持共享ArrayBuffers(Chrome60)总结JavaScript执行性能,根据环境和上下文Ignition+TurboFan+Webassambly,可以让V8快速启动/峰值性能;低内存/高优化内存;各种档位任意切换;本文作者:秦悦阅读原文,为云栖社区原创内容,未经允许不得转载。