1

有什么方法可以加速 JS 脚本(我的意思是一些复杂的 DOM 操作,比如游戏或动画)?

4

7 回答 7

3

真的没有办法真正加快速度。您可以压缩它,但不会更快。

于 2010-02-17T00:40:00.667 回答
2

你能做的最好的就是优化你的代码。使用分析器——对于 Firefox,有 Firebug、Safari 和 Windows IE 8 内置了 JavaScript 调试器和分析器(至少我相信 IE 8 可以,如果我错了,请有人纠正我......)。在您的代码上运行配置文件将向您显示最慢的部分在哪里,这些是您可以专注于优化的部分......也许还有更多更具体的问题。

于 2010-02-17T03:34:57.693 回答
2

使用 V8 javascript 引擎?:P

您可以做到这一点的唯一方法是减少代码中 dom 和范围访问的数量。例如,当多次访问 dom 中的元素时,而不是

document.something.mydiv.myelement.property1 = this
document.something.mydiv.myelement.property2 = bla
document.something.mydiv.myelement.property3 = foo
document.something.mydiv.myelement.property4 = bar

var myel = document.something.mydiv.myelement
myel.property1 = this
myel.property2 = bla
myel.property4 = bar
myel.property3 = foo

注意一些javascript引擎会自动为你做这个优化,但是对于老版本的浏览器,后者肯定会比前者快,因为它只需要通过一次访问链就可以到达myel

观看此视频以了解更多 javascript 优化技术 http://www.youtube.com/watch?v=mHtdZgou0qU

于 2010-02-17T00:45:12.263 回答
2

如果您的意思是在浏览器之外,那么您应该使用最快的,即Chrome 的 V8 Java Script 引擎

浏览器内部有丰富的优化技术可以更快地加载Java Script,这里是google优化技术的好地方。

  • 使用 YUI 压缩器之类的工具编译您的 Java 脚本,而不是使用 gzip 压缩。
  • 只加载您需要的最低限度
  • 复杂的动画仍然最好使用 Rich UI 插件,即 Flash/Silverlight

对于动画,请考虑在支持它的浏览器上使用 HTML 5 Canvas 元素,对于不支持它的浏览器,请退回到 flash。

谷歌地图是纯 Java 脚本可能实现的一个很好的例子,尽管他们已经花费了大量资源来优化每个浏览器的性能。与往常一样,提高速度的最佳方法是对不同的方法进行基准测试。例如 div.innerHTML ="",大多数时候比使用 DOM 动态添加元素等更快。

于 2010-02-17T00:47:22.463 回答
1

尝试对定位或“屏幕外”元素进行动画和显示更改 - 重绘页面的次数最少。

通过更改 cssText 或 className 进行多项样式更改,而不是一次更改一个属性。

如果您需要在同一进程中查找元素或属性两次,则第一次应该进行本地引用。

如果您不进行调试,请记住关闭调试器。

于 2010-02-17T02:37:28.963 回答
1

这是一个非常模糊的问题。您可以做一百万件事情来加速您的代码(在撰写本文时, Ajaxian157 篇关于该主题的文章),但是没有“让我更快”按钮可以神奇地让所有脚本运行得更快。如果有,生活会轻松很多

于 2010-02-17T00:51:48.217 回答
1

谷歌的关闭项目提出了一些类似的主张,尽管我没有亲自尝试过。

Closure Compiler 将 JavaScript 编译成紧凑的高性能代码。编译器会删除死代码并重写并最小化剩下的代码,以便快速下载和运行。它还检查语法、变量引用和类型,并警告常见的 JavaScript 陷阱。

于 2010-02-17T00:57:54.237 回答