0

如果我事先知道我的数字在 0 到 100 之间,有谁知道如何减少 JavaScript 中数字的内存大小?

我的问题的示例和解释:

我的 JavaScript 应用程序适用于非常大的对象:每个对象有数千个孩子。我的对象看起来像“sims”的集合:

[
  {
    gender : "male",
    age : 45
  },
  {
    gender : "female",
    age : 21
  },
  {
    gender : "female",
    age : 78
  },
]
  • 像“female”这样的字符串的内存大小是12字节(female.length*2)
  • 表示“女性”的数字的内存大小为 8 个字节
  • 表示“女性”的布尔值的内存大小为 4 个字节

伟大的 !我可以使用布尔值减小对象的内存大小!

但是您知道减少“年龄”属性的内存大小的方法吗?

每个占 8 个字节,虽然我知道这个数字不能是 152042456.985,但只有 > 0 和 < 100。

一个主意 ?非常感谢 !

4

2 回答 2

1

您可以轻松地将 ⌊32 ÷ 7⌋ = 4 个年龄存储在一个整数中;您还可以使用 GZip 压缩、算术编码或各种花哨的技巧。

但是为什么要打扰呢?现在这对你来说绝对不是个问题。对象本身的内存开销可能更重要。32 位很好,“数千个孩子”并不是一个重要的数字。999,999 个年龄(最高的“千”)大约是 3MB 的内存。

(顺便说一句,你是说代表“女性”的数字是 8 个字节,但所有常见的 JavaScript 引擎在内部将整数存储为 4 个字节。)

于 2013-06-02T22:53:08.213 回答
0

存储“链接”所需的指针将为每个使用字符串或任何类型的对象的存储机制添加 4-8 个字节。数字是你能得到的最节省空间的,尽管有类型的数组。

于 2013-06-02T23:07:08.677 回答