如果我事先知道我的号码在0到100之间,有没有人知道如何减少JavasScript中数字的内存大小?
我的问题的示例和解释:
我的JavaScript应用程序适用于非常大的对象:每个对象有数千个孩子。 我的对象看起来像“sims”的集合:
[
{
gender : "male",
age : 45
},
{
gender : "female",
age : 21
},
{
gender : "female",
age : 78
},
]
太棒了!我可以使用布尔值减少对象的内存大小!
但是你知道一种减少“age”属性的内存大小的方法吗?
每个人占用8个字节,虽然我知道这个数字不能是152042456.985,但只有> 0和< 100。
一个想法?非常感谢!
答案 0 :(得分:1)
你可以很容易地将⌊32÷7⌋= 4年龄存储在一个整数中;你也可以使用GZip压缩,或算术编码,或所有数量的花哨技巧。
但为什么要这么麻烦?这对你来说实际上不是一个问题。对象本身的内存开销可能更重要。 32位很好,“成千上万的孩子”并不是一个重要的数字。 999,999年龄(最高“数千”)约3MB的记忆。
(顺便说一下,你说的是代表“女性”的数字是8个字节,但是整数在内部被所有常见的JavaScript引擎存储为4个字节。)
答案 1 :(得分:0)
存储“链接”所需的指针将为每个使用字符串或任何类型的对象的存储机制添加4-8个字节。数字是你可以得到的最节省空间的,尽管有类型的数组。