【发布时间】:2012-01-30 00:52:23
【问题描述】:
我正在编写一个 HTML5 画布可视化。根据 Chrome 开发者工具分析器,90% 的工作是在 (program) 中完成的,我假设 V8 解释器在工作中调用函数和切换上下文等等。
除了逻辑优化(例如,仅重绘已更改的可视化部分)之外,我还能做些什么来优化 JavaScript 的 CPU 使用率?我愿意为性能牺牲一些可读性和可扩展性。有没有因为我的 Google 技能糟糕而遗漏的大清单?我有一些想法,但我不确定它们是否值得:
- 限制函数调用
- 尽可能使用数组而不是对象和属性
- 数学运算结果尽可能使用变量
- 缓存
Math.PI / 180等常用数学运算 - 使用
sin和cos近似函数代替Math.sin()和Math.cos() - 在传递数据而不是创建新对象时重用对象
- 将
Math.abs()替换为~~ - 学习jsperf.com直到我的眼睛流血
- 在我的 JavaScript 上使用预处理器来执行上述一些操作
关闭后更新:以下是我想问的问题的答案。我想用以下内容来回答我自己的问题:
【问题讨论】:
-
你觉得你的应用太慢了吗?
-
投票决定关闭它。关于这个主题的书籍有整本书,你希望得到什么样的答案?
-
~~不是Math.abs()的合适替代品。 -
性能调优始终是关于学习如何衡量代码的哪些部分花费的时间最多。在不确切知道代码的哪些部分是真正的瓶颈的情况下尝试应用性能优化就像蒙着眼睛投篮一样。您可能会很幸运并找到正确的镜头,但您可能会花费大量时间而没有取得任何进展。您必须找到一种方法来检测您的代码并隔离花费最多时间的函数。然后,也只有到那时,您才能明智地讨论可以采取哪些措施来加速这些功能。
标签: javascript performance optimization