FP使代码在V8中运行得更快?

时间:2015-08-12 14:03:11

标签: javascript functional-programming jit

最近我玩了很多Javascript(Chrome),我想到了一些事情。

  1. V8有一个JIT,可以让代码运行得更快。
  2. 函数式编程意味着你将逻辑写入函数并通过链调用/组合它们,意味着核心函数将被频繁调用(而不是它的真正定义只是为了得到我的观点)。
  3. JIT是exchange time with space的一个最佳实践,基本上是首次缓存高级函数的机器代码,并在下次运行缓存。
  4. 所以我可以说,如果以FP方式编写代码并由具有JIT功能的VM运行,应用程序会更快。

1 个答案:

答案 0 :(得分:0)

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

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

  

V8如何编译JavaScript代码?

     

V8有两个编译器!

     

可以为任何JavaScript生成良好代码的“完整”编译器:好   但不是很好的JIT代码。此编译器的目标是生成代码   很快。为了实现其目标,它不进行任何类型分析和   对类型一无所知。相反,它使用内联缓存   或“IC”策略,以在程序时细化关于类型的知识   跑。 IC非常高效,速度提高了20倍。

     

优化编译器,可为大多数人生成出色的代码   JavaScript语言。它稍后会重新编译热门功能。该   优化编译器从内联缓存中获取类型并生成   关于如何更好地优化代码的决定。但是,有些   语言功能尚不支持,如try / catch块for   实例。 (try / catch块的解决方法是编写“非   稳定“代码到函数中并在try中调用函数   块)

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