使用Chrome&;时是否在客户端和服务器上编译javascript;Node.js? 我一直认为脚本语言(JavaScript、VScript、任何类型的脚本)都是解释的,因此比C和C++的编译语言慢。

使用Chrome&;时是否在客户端和服务器上编译javascript;Node.js? 我一直认为脚本语言(JavaScript、VScript、任何类型的脚本)都是解释的,因此比C和C++的编译语言慢。,javascript,node.js,google-chrome,compilation,v8,Javascript,Node.js,Google Chrome,Compilation,V8,“JavaScript是一种解释语言,具有可选的JIT编译支持。在较旧的实现中(例如Internet Exlorer 8和更早版本,Firefox 3.5之前版本),JavaScript是一种纯解释性语言。这意味着脚本执行时无需进行初步编译,即无需将脚本文本转换为依赖于系统的机器代码。”-- 在阅读以下内容时,显然google chrome(使用V8)在客户端上编译javascript: “这是它的工作原理。首先,V8将JavaScript函数的编译推迟到第一次执行之前(以减少编译所花费的总时间

“JavaScript是一种解释语言,具有可选的JIT编译支持。在较旧的实现中(例如Internet Exlorer 8和更早版本,Firefox 3.5之前版本),JavaScript是一种纯解释性语言。这意味着脚本执行时无需进行初步编译,即无需将脚本文本转换为依赖于系统的机器代码。”--

在阅读以下内容时,显然google chrome(使用V8)在客户端上编译javascript:

“这是它的工作原理。首先,V8将JavaScript函数的编译推迟到第一次执行之前(以减少编译所花费的总时间)。接下来,经常执行的代码片段将由专门的优化编译器进行第二次编译。第二次编译需要更多的时间,但由于许多高级优化技术,它可以提供更快的代码。“--

这听起来像是在V8上,javascript现在是一种编译语言,因为他们一看到函数就在执行之前将每个函数编译成机器代码

另外,这也表明(对于这个测试案例),V8上的JavaScript比编译C++更快。p>

这是否意味着JavaScript实际上是在客户端和服务器之间执行(即因为NoDE.js使用V8)而编译成机器代码,因此运行为符合机器代码(如java、C++或C++)而不是解释代码(如Perl、PHP或PerfSek),具有相关的执行速度益处?

口译语言:

“口译的主要缺点是速度慢得多 程序执行与计算机上直接机器代码执行的比较 主机CPU“-

编译语言:


“编译语言总是被认为是快速的,因为它们是由计算机直接执行的。”——

是的,它是编译的,但编译本身并不能使任何事情变得快速,这是编译器所做的优化


与其他引擎不同的是,V8根本没有解释器这一事实是一种设计折衷——这并不意味着解释器比未优化的编译代码慢。

是的,它是编译的,但编译本身并不能加快速度,这是编译器所做的优化


与其他引擎不同,V8根本没有解释器这一事实是一种设计权衡——这并不意味着解释器比未优化的编译代码慢。

是的,在2014年,每个人都使用各种策略将JavaScript编译为本机代码以优化代码。甚至有一些标准允许以这样的方式编译JavaScript,即生成的代码至少与用C/C++或Java编写的代码一样快


和往常一样,最终获得的性能实际上取决于优化和代码。正如在java或C++中编写慢代码一样容易,也可以编写世界上没有自动优化器可以修复的东西。

是的,在2014,每个人都使用各种策略编译JavaScript到本机代码来优化代码。甚至有一些标准允许以这样的方式编译JavaScript,即生成的代码至少与用C/C++或Java编写的代码一样快


和往常一样,最终获得的性能实际上取决于优化和代码。正如在java或C++中编写慢代码一样容易,您也可以编写世界上没有自动优化器可以修复的东西。

相关,也许:它取决于实现,但是JavaScript实际上被解释、编译成较低级别的语言,如C,然后编译成StucCurts。@V8引擎没有解释器,它直接进行编译。相关的,可能是:它取决于实现,但JavaScript实际上是被解释的,被编译成一种较低级别的语言,如C,然后被编译成指令。@user3417400,V8引擎没有解释器,直接进行编译。@ChrisGciso由V8的非优化编译器生成的代码与SpiderMonkey的字节码解释器的速度相同或较慢。口译根本不意味着“英语单词”..@ChrisGciso我的意思是,口译员不会像你暗示的那样处理源代码-即使是最天真的口译员也至少会解析它,更不用说像Chromium/V8这样的世界级解释器了。我喜欢那些拥有Chromium/V8代码的人给出的唯一答案是最被否决的。@ChrisGciso最典型的情况是,输入源代码被解析成AST,字节码是从AST生成的。然后解释字节码,这早已不是“英语单词”表示法了。编译消除了解释器开销,我想这就是他所说的“速度优势”。然而,它也增加了前期成本(编译到机器代码可能比编译到其他一些内部表示更昂贵)。这就是说,在像javascript这样复杂的语言中,其他优化通常会超过这些影响。@ChrisGciso由V8的非优化编译器生成的代码与SpiderMonkey的字节码解释器的速度相同或更慢。口译根本不意味着“英语单词”..@ChrisGciso我的意思是,口译员不会像你暗示的那样处理源代码-即使是最天真的口译员也至少会解析它,更不用说像Chromium/V8这样的世界级解释器了。我喜欢那些拥有Chromium/V8代码的人给出的唯一答案是最被否决的。@ChrisGciso最典型的情况是,输入源代码被解析成AST,字节码是从AST生成的。然后解释字节码,这是早已过时的“英语单词”表示法