Tri*_*tan 2 javascript optimization
我正在对我正在编写的JavaScript游戏引擎进行一些"极端"优化.而且我注意到我经常使用数学函数!而且我目前只在我使用它们的函数本地缓存它们.所以我将使用下面的代码在窗口对象的全局级别缓存它们.
var aMathFunctions = Object.getOwnPropertyNames(Math);
for (var i in aMathFunctions)
{
window[aMathFunctions[i]] = Math[aMathFunctions[i]];
}
Run Code Online (Sandbox Code Playgroud)
这有什么重大问题或副作用吗?我是否会覆盖窗口中的现有功能,是否会大幅增加内存占用量?或者还有什么可能出错?
编辑:以下是关于JavaScript优化的阅读摘录,引导我尝试这一点.
财产深度
嵌套对象以使用点表示法是命名空间和组织代码的好方法.不可思议的是,在性能方面,这可能是一个问题.每次在这种情况下访问值时,解释器必须遍历您嵌套的对象才能获得该值.值越深,遍历越多,等待的时间越长.因此,尽管命名空间是一个很好的组织工具,但保持尽可能浅的东西是获得更快性能的最佳选择.YUI库的最新版本演变为从命名空间中消除整个嵌套层.例如,YAHOO.util.Anim现在是Y.Anim.
编辑:由于此次修订,Chrome中不再重要; 也许缓存现在更快.
不要这样做,使用全局函数时要慢得多.
http://jsperf.com/math-vs-global
在Chrome上:
sqrt(2); - 12,453,198 ops/second
Math.sqrt(2); - 542,475,219 ops/second
Run Code Online (Sandbox Code Playgroud)
至于内存使用情况,另一方面全球化也不会坏.你只需创建另一个参考; 函数本身不会被复制.
| 归档时间: |
|
| 查看次数: |
823 次 |
| 最近记录: |