Kev*_*ang 7 javascript performance
我只是想知道函数对象的开销是多少.在一个面向对象的设计模型,你可以酿出了很多每个都有自己的私有函数的对象,但在你有超过10,000个,这些私有函数对象的情况下,我认为,可以使一个很大的开销.我想知道是否有足够的情况将这些函数移动到实用程序类或外部管理器以保存这些函数对象占用的内存.
这是Chrome处理功能的方式,其他引擎可能会执行不同的操作.
我们来看看这段代码:
var funcs = [];
for (var i = 0; i < 1000; i++) {
funcs.push(function f() {
return 1;
});
}
for (var i = 0; i < 1000; i++) {
funcs[0]();
}
Run Code Online (Sandbox Code Playgroud)
现在,引擎创建了1000个功能.
单个函数本身几乎不占用任何内存(在这种情况下为36个字节),因为它只保存一个指向所谓的SharedFunctionInfo对象的指针,该对象基本上是对源代码*中函数定义的引用.这称为延迟解析.
只有在经常运行它时,JIT才会启动,并创建函数的编译版本,这需要更多内存.所以,最后funcs[0]
需要256个字节:
*)这不完全正确,它还包含范围信息,函数名称和其他元数据,这就是为什么在这种情况下它的大小为592字节.
归档时间: |
|
查看次数: |
1299 次 |
最近记录: |