所以我一直在用 JavaScript 编写游戏(不是网页游戏,使用 JavaScript 恰好是脚本语言的游戏引擎)。不幸的是,游戏引擎的 JavaScript 引擎是一个古老版本的 SpiderMonkey,它运行我的游戏有点慢。虽然它不是很慢,但它足够慢,我决定做一些优化。
我知道一些基本的优化,比如使用局部变量而不是全局变量(无论如何这是一个好主意),使用前缀而不是后缀递增/递减,倒计时而不是循环中的递增,但是还有哪些更好的 JavaScript 优化呢?
所以我一直在用 JavaScript 编写游戏(不是网页游戏,使用 JavaScript 恰好是脚本语言的游戏引擎)。不幸的是,游戏引擎的 JavaScript 引擎是一个古老版本的 SpiderMonkey,它运行我的游戏有点慢。虽然它不是很慢,但它足够慢,我决定做一些优化。
我知道一些基本的优化,比如使用局部变量而不是全局变量(无论如何这是一个好主意),使用前缀而不是后缀递增/递减,倒计时而不是循环中的递增,但是还有哪些更好的 JavaScript 优化呢?
您是否尝试使用Closure Compiler而不是弄乱源代码?它是一个从 javascript 到 javascript 的编译器,它做了一些优化。主要是为了大小,但生成的 js 也经常运行得更快。不知道优化是否是 V8 特定的。
我不知道您的代码是如何构造的,但假设它的一部分驻留在函数或循环中,这些函数或循环经常运行:
if()
为? :
例如
if (expr) a = 1;
else a = 2;
变成
a = expr ? 1 : 2;
if()
s 变成 aswitch()
substr()
,substring()
或slice()
检查哪个更快(在嵌入式浏览器上,我曾经注意到因子 3 的差异)。不过,请注意它们的参数!eval()
很慢(除了它是邪恶的)如果代码变得难以阅读,请写注释。