FP能让代码在V8中运行得更快吗?

does FP make code run faster in V8?

本文关键字:运行 代码 V8 FP      更新时间:2023-09-26

最近我玩了很多Javascript(Chrome),有一些事情出现在我的脑海里。

  1. V8有一个JIT,使代码运行得更快。
  2. 函数式编程意味着你将逻辑写入函数并通过链调用/组合它们,这意味着核心函数将被频繁调用(这不是它的真正定义,只是为了理解我的观点)。
  3. JIT是exchange time with space的一个最佳实践,基本上是在第一次缓存高级函数的机器码,下次再运行缓存。

所以我可以说,如果用FP方式编写代码,并由具有JIT功能的VM运行,应用程序将会更快。

关于这个主题的一个很好的阅读在这里:http://thibaultlaurens.github.io/javascript/2013/04/29/how-the-v8-engine-works/

特别是关于V8如何编译和注入JIT代码的部分

V8如何编译JavaScript代码?

V8有两个编译器!

一个"完整"的编译器,可以为任何JavaScript生成好的代码:好但不是很好的JIT代码。这个编译器的目标是生成代码很快。为了实现它的目标,它不做任何类型分析对类型一无所知。相反,它使用内联缓存或"IC"策略,以便在程序运行时完善关于类型的知识运行。集成电路效率高,速度提高20倍。

一个优化编译器,可以为大多数程序生成优秀的代码JavaScript语言。它稍后出现并重新编译热门函数。的优化编译器从内联缓存中获取类型并生成关于如何更好地优化代码的决策。然而,一些语言特性还不支持,比如try/catch block for实例。(try/catch块的解决方法是写入"non"稳定"代码变成一个函数并在尝试中调用该函数块)

简而言之,您最快的代码是在对象或原型函数定义之后不修改它们的代码