内联 JavaScript 函数调用加快了执行速度,并在 gzip 压缩后减少了代码大小,如本文所述:
http://blog.calyptus.eu/seb/2011/01/javascript-call-performance-just-inline-it/
但是,我找不到自动处理 JS 源文件并在其中内联所有(或更好的是选定的)内联函数调用的工具。Google的闭包编译器会做一些内联,但并非总是如此,也不是可配置的。
提前感谢!
我几乎不相信这种"技术"可以加快任何执行时间。至少在现实世界中不是这样。博客关于代码大小和Gzipping tho可能是正确的。
无论如何,我不认为任何Javascript缩小/压缩器会做很多事情。原因很简单,在提供的示例中非常明显。通过将函数调用替换为实际的函数代码,您将事情设置到另一个上下文中。这可能最终变得非常邪恶。如果父函数(-context)已经声明并使用了一个名为foo的变量怎么办。如果在另一个函数中使用相同的变量,则可能会覆盖该变量并导致错误。
更糟糕的是,如果使用了一些try/catch
或eval
块,这会创建一个带有精心表达的"动态范围"(实际上在 ecma-script 中不可用)的额外上下文。但是,在这种情况下,JIT或任何Javascript实现几乎不可能优化任何内容。
让 JIT 弄清楚像内联这样的事情。内联很容易通过降低缓存性能来降低性能。
此外,除非您已经确定了实际的瓶颈,否则像这样过早进行优化几乎不值得。