簡體   English   中英

Javascript:如何減少一個數字的內存大小?

[英]Javascript : how to reduce the memory size of a number?

如果我事先知道我的數字在0到100之間,是否有人知道如何減小JavasScript中數字的內存大小?

我的問題的示例和解釋:

我的JavaScript應用程序可以處理非常大的對象:每個對象都有數千個孩子。 我的對象看起來像“ sims”的集合:

[
  {
    gender : "male",
    age : 45
  },
  {
    gender : "female",
    age : 21
  },
  {
    gender : "female",
    age : 78
  },
]
  • 像“ female”這樣的字符串的內存大小為12個字節(female.length * 2)
  • 表示“女性”的數字的內存大小為8個字節
  • 表示“女性”的布爾值的內存大小為4個字節

太好了! 我可以使用booleans減少對象的內存大小!

但是,您知道一種減小“ age”屬性的內存大小的方法嗎?

每個人占用8個字節,盡管我知道數字不能是152042456.985,但只能是> 0和<100。

一個主意 ? 非常感謝 !

您可以輕松地將⌊32÷7⌋= 4個年齡存儲在一個整數中; 您還可以使用GZip壓縮或算術編碼,或使用各種花哨的技巧。

但是為什么要打擾呢? 目前,這實際上對您來說不是問題。 對象本身的內存開銷可能更重要。 32位就可以了,“成千上萬的孩子”並不是一個很大的數字。 999,999個年齡(最高的“千”)約為3MB的內存。

(順便說一句,您說的是代表“女性”的數字將是8個字節,但是所有常見的JavaScript引擎在內部將整數存儲為4個字節。)

存儲“鏈接”所需的指針將為每個使用字符串或年齡的對象的存儲機制增加4-8個字節。 盡管是類型數組,數字還是可以獲得的最節省空間的方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM