【问题标题】:Storing Array of a billion double's / ints in html5 localStorage?在html5 localStorage中存储十亿双/整数的数组?
【发布时间】:2018-12-11 11:49:06
【问题描述】:

我在这里挑战 HTML5 的极限。

我有这个问题:我有一个十亿双精度数(或整数)的 javascript 数组,反正有很多数字。我想将它存储在 HTML5 localStorage 中。

你可能会说,嘿,只使用 JSON.Stringify,但是,JSON.Stringify 会产生一个 200MB 的巨大字符串。因为,一个数字(例如 0.03910319)被存储为一个字符串(所以每个数字占用一些字节,而不是整个数字只占用几个字节)。

我在考虑先对数组中的数字进行base64编码,然后再应用JSON.stringify?

或者是 JSON.Stringify 然后 GZip 更好还是使用一些压缩功能?

想出您的创意,以高效的方式对包含十亿个整数/双精度的 JavaScript 数组进行编码/解码到 localStorage 变量。

TensorFlowJS

我查看了 TensorflowJS,我的数组基本上是一维张量。 TensorFlow 有一些模型的存储能力……也许这是一个可行的解决方案。

【问题讨论】:

  • 使用压缩,然后如果结果仍然太大(5MB 大小限制 IIRC),使用 IndexedDB 而不是 LocalStorage,尽管它对于 IndexedDB 也可能太大。 (或者,这听起来根本不应该用于客户端存储)
  • @CertainPerformance 您建议哪种压缩方式? GZIP 对这个有好处吗?
  • 看看lz-string
  • 不是我的专长,尝试各种选项,看看它们如何为您服务
  • @Jeto lz-string 看起来很有希望!

标签: javascript arrays tensorflow compression local-storage


【解决方案1】:

对于也在处理这个问题的任何人:

我为我的数据使用了 Float32Array(javascript 类型数组)。

使用https://github.com/localForage/localForage 可以轻松地将 Float32Array 存储在 IndexedDB 中

【讨论】:

    猜你喜欢
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    • 2011-10-04
    • 2018-08-13
    • 2014-01-22
    • 2021-05-23
    相关资源
    最近更新 更多