1

所以我一直在用 JavaScript 编写游戏(不是网页游戏,使用 JavaScript 恰好是脚本语言的游戏引擎)。不幸的是,游戏引擎的 JavaScript 引擎是一个古老版本的 SpiderMonkey,它运行我的游戏有点慢。虽然它不是很慢,但它足够慢,我决定做一些优化。

我知道一些基本的优化,比如使用局部变量而不是全局变量(无论如何这是一个好主意),使用前缀而不是后缀递增/递减,倒计时而不是循环中的递增,但是还有哪些更好的 JavaScript 优化呢?

4

2 回答 2

2

您是否尝试使用Closure Compiler而不是弄乱源代码?它是一个从 javascript 到 javascript 的编译器,它做了一些优化。主要是为了大小,但生成的 js 也经常运行得更快。不知道优化是否是 V8 特定的。

于 2010-12-30T20:41:21.563 回答
1

我不知道您的代码是如何构造的,但假设它的一部分驻留在函数或循环中,这些函数或循环经常运行:

  • 尽可能替换if()? :

例如

if (expr) a = 1;
else a = 2;

变成

a = expr ? 1 : 2;
  • 如果可能,将一系列if()s 变成 aswitch()
  • 如果您使用substr(),substring()slice()检查哪个更快(在嵌入式浏览器上,我曾经注意到因子 3 的差异)。不过,请注意它们的参数!
  • 避免重新计算值或再次使用相同的参数调用相同的函数,即使它只是一个次要的
  • 如果您一遍又一遍地访问数组的相同元素,请将其存储在局部变量中
  • eval()很慢(除了它是邪恶的)
  • 请记住,JavaScript 引擎是单线程的。没有什么是并行运行的,甚至是计时器或间隔。

如果代码变得难以阅读,请写注释。

于 2010-12-30T21:36:23.997 回答