FP能让代码在V8中运行得更快吗?
does FP make code run faster in V8?
最近我玩了很多Javascript(Chrome),有一些事情出现在我的脑海里。
- V8有一个JIT,使代码运行得更快。
- 函数式编程意味着你将逻辑写入函数并通过链调用/组合它们,这意味着核心函数将被频繁调用(这不是它的真正定义,只是为了理解我的观点)。
- 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"稳定"代码变成一个函数并在尝试中调用该函数块)
简而言之,您最快的代码是在对象或原型函数定义之后不修改它们的代码
相关文章:
- AJAX调用运行C代码的最佳实践
- 在经过一段时间或满足条件后运行代码
- 在Firefox restartless插件中,当一个新窗口打开时,我如何运行代码(监听窗口打开)
- 如果调试器关闭,Internet Explorer将出现运行代码问题
- JQuery 帖子未在 PHP 文件中运行代码
- 当ajax请求发生时运行代码的Chrome扩展
- 当我运行代码时,我得到以下结果 []对象对象] [对象对象],但应该给我一个有序数组
- 仅当客户端连接到Meteor服务器时才运行代码
- 在.each()循环中的ajax完成后,Jquery运行代码
- node.js和Cygein,我该如何运行代码
- 未访问全局变量,未运行代码
- Meteor - 在客户端上的异步回调的 for 循环后运行代码
- 运行代码以在Android应用程序中单击javascript按钮?尝试在页面上抓取回复按钮联系信息 craigslist
- 函数结束时如何运行代码
- JS 在不满足条件时在 if 语句中运行代码段
- 在 Ember 视图参数更改上运行代码
- 如何在 YUI 模块中运行代码
- 如何在未在 iframe 中定义的 iFrame 中运行代码
- 在后台运行代码,同时显示警报
- 加载页面时运行代码