Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:如何减少数字的内存大小?_Javascript_Memory_Types_Numbers_Size - Fatal编程技术网

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

Javascript:如何减少数字的内存大小?,javascript,memory,types,numbers,size,Javascript,Memory,Types,Numbers,Size,如果我事先知道我的数字在0到100之间,有人知道如何减少JavasScript中数字的内存大小吗 我的问题的示例和解释: 我的JavaScript应用程序处理非常大的对象:每个对象有数千个子对象。 我的对象看起来像“模拟人生”的集合: 像“female”这样的字符串的内存大小是12字节(female.length*2) 表示“阴性”的数字的内存大小为8字节 表示“阴性”的布尔值的内存大小为4字节 太好了!我可以减少我的对象的内存大小,使用布尔 但是您知道一种减少“age”属性内存大小的方法吗

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

我的问题的示例和解释:

我的JavaScript应用程序处理非常大的对象:每个对象有数千个子对象。 我的对象看起来像“模拟人生”的集合:

  • 像“female”这样的字符串的内存大小是12字节(female.length*2)
  • 表示“阴性”的数字的内存大小为8字节
  • 表示“阴性”的布尔值的内存大小为4字节
太好了!我可以减少我的对象的内存大小,使用布尔

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

每个都需要8个字节,虽然我知道数字不能是152042456.985,但只能是>0和<100


一个主意?非常感谢

您可以存储⌊32及分区;;7.⌋ = 4岁在一个整数很容易;您还可以使用GZip压缩、算术编码或所有花式技巧

但是为什么要麻烦呢?这不可能是你现在的问题。对象本身的内存开销可能更重要。32位就可以了,“数千个孩子”并不是一个很重要的数字。999999年(最高的“千年”)大约有3MB的内存


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

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

可以使用,但基本上没有意义。JavaScript对于这类事情来说是错误的语言。4个字节来存储一个整数,你对此有参考吗?@Joni:目前没有(我一直看到它,但无法确定它在哪里),但可以吗?或者是按位操作的ECMAScript规范,这意味着它有一点(它们强制转换为32位整数)?抱歉:)我发现了这个:有趣的东西……有人知道在哪里可以找到JavaScript中所有数据类型和指针的官方/实际内存成本吗?这在很大程度上取决于实现的内部结构,很难找到相关文档。例如,V8似乎将4字节用于小整数,并将其他所有内容存储在堆上,为指针添加4字节的存储空间,以指向任何已经需要的内容(假设我理解正确):
[
  {
    gender : "male",
    age : 45
  },
  {
    gender : "female",
    age : 21
  },
  {
    gender : "female",
    age : 78
  },
]