JavaScript -使用包object-sizeof确定对象的内存大小

js81xvg6  于 2023-05-05  发布在  Java
关注(0)|答案(1)|浏览(340)

我一直在使用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 字节。
差别很大。
谁能告诉我哪一个更准确,为什么?或者可能已经在某个地方解释过了,我只是还没有找到,请添加链接。
谢谢

vecaoik1

vecaoik11#

第一个方法(index.js)迭代对象的所有属性,并根据它们的类型将它们的大小相加。该方法可能更准确,但在性能和存储器方面也更昂贵。
第二个方法(indexv2.js)只是将对象转换为JSON字符串,从它创建一个缓冲区并返回其长度。该方法可能更快和更简单,但也不太准确,因为它没有考虑JSON格式和缓冲区编码的开销。
您可能还希望只使用Object.keys(obj).length,它返回对象自身可枚举属性的数量。此方法不依赖于任何外部库,并且适用于任何现代浏览器。

相关问题