0

存储 ca 的最佳方法是什么?直接在js文件中的100个双打序列?每个序列的长度为 ca。10 000 双倍或更多。

要求

  • javascript 文件必须尽可能快地执行

  • 对我来说,按需迭代序列就足够了(我不需要在 js 执行时解码所有数字。它们将在事件时解码。)

  • 它不应该占用太多空间

最简单的选择可能是使用 CSV 格式的字符串,但是双打并没有以最有效的方式存储,对吧?

另一种选择可能是将数字存储在 Base64 字节数组中,但是我不知道如何将 base64 字符串读取为双精度。

编辑:

我想使用双打来转换 Adob​​e 3D 注释中的 3d 节点的 Matrix4x4。Adobe 允许导入外部文件,但它非常复杂,直接将所有数据包含在 js 文件中可能会更简单。

4

1 回答 1

2

正如我在评论中提到的,尝试对值进行编码可能不值得。以下是我关于存储双打所需数据量的一些值(根据评论更新)。

假设有 1,000,000 个值:

  • 使用直接编码(不适用于 JS 文件):8 B = 8 MB
  • 使用 base64:10.7 B = 10.7 MB
  • 文字(最佳情况):1 B + 分隔符 = 2 MB
  • 文字(最坏情况):21 B + 分隔符 = 22 MB
  • 文字(平均情况假设均匀分布的值):19 B + 分隔符 = 20MB

注意:在最坏的情况下,双精度可能需要 21 个字节(假设精度为 15 位):1.23456789101112e-131

如您所见,您仍然无法将其减少到使用带有编码的纯文字值的 1/2 以下,如果您打算进行随机访问解码,它会很快变得复杂。最好坚持文字。您可能会从使用您提到的外部文件中获得一些好处,但这取决于这样做需要付出多少努力。

关于如何使用文字进行优化的一些想法:

  • 根据所需的精度,您可以近似值并将值限制为 5 位精度。这将难以置信地缩短文件。
  • 你可以压缩文件。我认为您可以使用 14 个字符 ( 0123456789.e-,) 指定任意数量的双精度数,因此理论上,您可以将这样的字符串压缩到其大小的一半。我不知道实用的现代压缩程序有多好。
于 2012-04-07T19:40:12.450 回答