我一直在使用JavaScript包https://www.npmjs.com/package/object-sizeof。只是在控制台中使用node执行一个. js文件。
这是测试对象:
var someObject = {
myName: "Sarah",
myNumber: 141414141414,
mySport:"Cross Country Skiing",
myCar: {
type: "VW",
wheels: 4,
doors: 5,
},
};
www.example.com中的计算https://github.com/miktam/sizeof/blob/master/index.js#L23对我来说是有意义的。迭代所有的属性,检查它们的类型并将值相加,这似乎是合乎逻辑的。我的测试对象的结果是 228 字节。
但是这个包的主要入口点是https://github.com/miktam/sizeof/blob/master/indexv2.js#L62。在这里,对象只是被字符串化、缓冲和计数。我的测试对象的结果是 118 字节。
差别很大。
谁能告诉我哪一个更准确,为什么?或者可能已经在某个地方解释过了,我只是还没有找到,请添加链接。
谢谢
1条答案
按热度按时间vecaoik11#
第一个方法(
index.js
)迭代对象的所有属性,并根据它们的类型将它们的大小相加。该方法可能更准确,但在性能和存储器方面也更昂贵。第二个方法(
indexv2.js
)只是将对象转换为JSON字符串,从它创建一个缓冲区并返回其长度。该方法可能更快和更简单,但也不太准确,因为它没有考虑JSON格式和缓冲区编码的开销。您可能还希望只使用
Object.keys(obj).length
,它返回对象自身可枚举属性的数量。此方法不依赖于任何外部库,并且适用于任何现代浏览器。