gpt4 book ai didi

javascript - Javascript 中实例化对象的性能影响

转载 作者:行者123 更新时间:2023-11-28 01:36:27 25 4
gpt4 key购买 nike

我有一个应用程序,当前通过以下方式计算和存储数据(显然这里的情况已经非常简化,实际上内部对象中有更多属性):

var processedData = [];
sourceData.forEach(function (d) {
processedData.push({
a: getA(d),
b: getB(d),
c: getC(d)
});
}, this);
function DoStuff(row) {
// Do Some Stuff
}

这里创建的对象数量可能很高(数千),当前方法的性能很好,但在更广泛的背景下,我认为如果我转向更定义的对象格式,它确实会提高代码的可读性和可测试性:

var row = function (a, b, c) {
this.a = a;
this.b = b;
this.c = c;
this.DoStuff = function () {
// Do Some Stuff
}
};
var processedData = [];
sourceData.forEach(function (d) {
processedData.push(new row(
getA(d),
getB(d),
getC(d)
));
}, this);

这里我担心两个因素,一是用 new 构造实例化对象的性能/内存成本。第二个是在具有数千个实例的对象中包含函数的内存成本。我不确定 JavaScript 在处理这类事情上有多聪明。

最佳答案

对原型(prototype)进行一些重新组织。只有一个函数而不是数千个函数

function Row (a, b, c) {
this.a = a;
this.b = b;
this.c = c;
}

Row.prototype.DoStuff = function () {
// do stuff
}

我建议使用for,而不是foreach。对于小集合来说这是不明智的,但是对于大集合来说是有意义的

这取决于您希望如何处理您的收藏。如果你不关心排序、分组等。东西,但需要一些随 secret 钥访问 - 您可以尝试创建一个哈希对象,其中一些字段为如下所示

function getValue(key) {
return hash[key];
}
var hash = {
"key1" : { "a" : 1 , "b" : 2 , "c" : 3 },
"key2" : { "a" : 1 , "b" : 2 , "c" : 3 }
};

不确定 getA、getB、getC 是什么 - 也许它也可以重新 工程化

希望有帮助

关于javascript - Javascript 中实例化对象的性能影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21486416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com