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