Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript JIT的显式控制?_Javascript_Standards_Jit - Fatal编程技术网

JavaScript JIT的显式控制?

JavaScript JIT的显式控制?,javascript,standards,jit,Javascript,Standards,Jit,我正在编写一些代码(用于音频处理),这些代码在很大程度上依赖于现代JavaScript性能优化。我动态生成JS方法,对Int32Array的内容执行一系列算法,我希望这些方法尽可能快地运行。“神奇”的优化效果非常好,我对如何帮助它有一些想法,但我想知道是否有办法改进它 我突然想到,如果我有办法告诉JavaScript引擎“这个方法总是运行得非常热,它的参数类型永远不会改变”,那就太好了。这样,(1)编译器可能更快更好地工作,(2)如果参数类型错误,或者优化由于其他原因失败,我可以得到一个异常,而

我正在编写一些代码(用于音频处理),这些代码在很大程度上依赖于现代JavaScript性能优化。我动态生成JS方法,对Int32Array的内容执行一系列算法,我希望这些方法尽可能快地运行。“神奇”的优化效果非常好,我对如何帮助它有一些想法,但我想知道是否有办法改进它

我突然想到,如果我有办法告诉JavaScript引擎“这个方法总是运行得非常热,它的参数类型永远不会改变”,那就太好了。这样,(1)编译器可能更快更好地工作,(2)如果参数类型错误,或者优化由于其他原因失败,我可以得到一个异常,而不是默默地返回到解释器

有人知道这类标准或倡议吗?或者如果做不到这一点,是否有评测工具可以准确地查看我的代码是如何优化的(在Chrome、Firefox和Safari中)


更新

关于asm.js--我没听说过--它听起来很酷,而且它有很多技巧,对于这类工作非常有用

据我所知,asm.js本身只是编写高度优化的JavaScript的约定,而不是js引擎的新规范。但是,它确实定义了一种方法来标记代码的兼容部分(通过在方法的开头添加一行
“use asm”
),目的是未来的JS引擎将对此做出响应,并在这些部分上使用特殊的提前(AOT)编译器,如果代码不符合有关类型安全等更严格的标准,则向控制台报告错误

AFAICT Mozilla有一个AOT编译器,谷歌也在为V8开发。我找不到任何关于JavaScriptCore的计划,对于IE我也不会屏息以待


但我想,它确实回答了我的问题——如果我现在生成用asm.js进行验证的代码,这没有什么坏处,而且在未来的浏览器中,我可能会得到性能提升。

Chrome的V8引擎有很多用于这种调试的选项。我想你会发现这篇博文很有用:


(这实际上是一系列文章,如果你继续阅读,你可以进入更高级的选项。)

相关吗?听起来确实有用。我的项目变得相当庞大,甚至除了音频处理代码,所以我想我会花一些时间来掌握这个分析器。。。