Jor*_*sso 8 javascript memory optimization html5 webkit
最近我一直在玩javascript代码优化来制作HTML5游戏,特别针对移动浏览器.我开始比较引擎并逐渐简化比较代码,我得到了一些我不理解的东西.
我注意到在Chrome中(所以我猜所有基于webkit的浏览器)修改全局变量会导致增加使用的内存.让我举两个例子:
1)修改全局变量:
码:
var globalVariable = 0;
var fps = 60;
window.onload = init;
function init () {
setInterval (loop, 1000/fps);
};
function loop (){
for (var i = 0; i < 1000000; i++) {
globalVariable = Math.random();
}
};
Run Code Online (Sandbox Code Playgroud)
内存时间轴屏幕:
正如你所看到的,它在前10秒内收集了大量内存!
2)创建局部变量而不是修改全局变量:
代码保持不变,唯一的变化是在循环中添加关键字"var".globalVariable = Math.random(); 变成var localVariable = Math.random();
内存时间轴屏幕:
正如你所看到的,内存使用率非常低,前10秒它只增加了大约0.1MB.
差异真的很大!我现在无法检查它,但我被告知在两个示例中的Firefox中,两种情况下的内存使用情况看起来几乎相同.
任何人都可以解释我,或指向我解释的资源?或者任何人都可以建议我如何修改全局变量以不增加已用内存?
(首先,快速咆哮一下“全局”变量。Javascript 中没有全局变量,有作用域,包括窗口级作用域)
但是,答案是,从 Javascript 函数中的另一个作用域访问变量会将其提升到当前作用域。这是对该效果的有趣解释。
归档时间: |
|
查看次数: |
744 次 |
最近记录: |