Javascript:如何减少一个数字的内存大小?

时间:2013-06-02 22:47:50

标签: javascript memory types numbers size

如果我事先知道我的号码在0到100之间,有没有人知道如何减少JavasScript中数字的内存大小?

我的问题的示例和解释:

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

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

太棒了!我可以使用布尔值减少对象的内存大小!

但是你知道一种减少“age”属性的内存大小的方法吗?

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

一个想法?非常感谢!

2 个答案:

答案 0 :(得分:1)

你可以很容易地将⌊32÷7⌋= 4年龄存储在一个整数中;你也可以使用GZip压缩,或算术编码,或所有数量的花哨技巧。

但为什么要这么麻烦?这对你来说实际上不是一个问题。对象本身的内存开销可能更重要。 32位很好,“成千上万的孩子”并不是一个重要的数字。 999,999年龄(最高“数千”)约3MB的记忆。

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

答案 1 :(得分:0)

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