javascript中的浮点数组压缩

javascript中的浮点数组压缩,javascript,arrays,string,performance,compression,Javascript,Arrays,String,Performance,Compression,我看到了很多js的压缩方法,但在大多数情况下,压缩数据是字符串形式的,并且包含文本。我需要压缩0-1范围内小于10^7个浮点数的数组 由于精度并不重要,最终我可以将其保存为只包含数字0-9的字符串(每个浮点小数点后只包含2个第一位数字)。对于这样的数据,什么方法是最好的?我希望有尽可能小的输出,但压缩这个字符串应该不会超过10秒。当每个浮点保存2位数字时,大约有10000个符号。我看到了很多js的压缩方法,但在大多数情况下压缩的数据是字符串,它包含文本。我需要压缩0-1范围内小于10^7个浮点数

我看到了很多js的压缩方法,但在大多数情况下,压缩数据是字符串形式的,并且包含文本。我需要压缩0-1范围内小于10^7个浮点数的数组

由于精度并不重要,最终我可以将其保存为只包含数字0-9的字符串(每个浮点小数点后只包含2个第一位数字)。对于这样的数据,什么方法是最好的?我希望有尽可能小的输出,但压缩这个字符串应该不会超过10秒。当每个浮点保存2位数字时,大约有10000个符号。我看到了很多js的压缩方法,但在大多数情况下压缩的数据是字符串,它包含文本。我需要压缩0-1范围内小于10^7个浮点数的数组

由于精度并不重要,最终我可以将其保存为只包含数字0-9的字符串(每个浮点小数点后只包含2个第一位数字)。对于这样的数据,什么方法是最好的?我希望有尽可能小的输出,但解压这个字符串的时间不应该超过10秒。当每个浮点保存2位数时,大约有10000个符号


数据包含声音波形记录,用于在不支持Web Audio API的古老浏览器上进行可视化。波形在Chrome用户客户端上以每秒20帧的速度记录,压缩并存储在服务器数据库中。然后在请求后发送回IE或ff以绘制可视化-所以我需要有损压缩-它可以真正有损于实现能够随歌曲元数据请求发送的大小。我希望在wav->mp3 64k级别上进行压缩是可能的(比如200:1或其他)。没有人会意识到波形在可视化方面并不完美,我想也许可以将这些浮动保存为0-9a-Z,它给出36步而不是100步,但将一个频率的记录减少到1个符号。但是下一步,在这个0-Z符号的字符串上使用什么压缩来实现最佳压缩呢?lzma适合这样的弦吗?压缩/解压将在web worker上运行,因此它不需要真正的即时-解压像10秒,压缩并不重要-而不是一首歌,因此大约需要2分钟

在黑暗中拍摄,如果你真的可以只依赖小数点后的前两位数字(即数组中没有0.00045s),需要两位数字,最简单的方法是乘以256,将整数部分作为一个字节

encoded = Math.floor(floatValue * 256)
decoded = encoded / 256.0

然而,如果你对你的数据了解得更多,你可以从你的值中挤出更多的熵。这是一个4:1的压缩比。

在黑暗中拍摄,如果你真的只能依靠小数点后的前两位数字(即数组中没有0.00045),并且你需要两位数字,那么最简单的方法就是乘以256,将整数部分作为一个字节

encoded = Math.floor(floatValue * 256)
decoded = encoded / 256.0

然而,如果你对你的数据了解得更多,你可以从你的值中挤出更多的熵。这是一个4:1的压缩比。

答案与所有压缩算法一样,极其依赖于您的数据。您的所有值是否都是0.01-1.00,比如百分比?或者数据中隐藏着0.0000042。你对你的彩车了解多少?如果所有这些恰好都是0.05,那么压缩算法就微不足道了。从根本上说,如果你说你只需要2个十进制数字,那么这意味着你需要大约1字节左右的数据每个浮点数。如果你的浮动都是32位的,那就意味着你最好的压缩是4:1。这足够好吗?答案与所有压缩算法一样,完全取决于您的数据。您的所有值是否都是0.01-1.00,比如百分比?或者数据中隐藏着0.0000042。你对你的彩车了解多少?如果所有这些恰好都是0.05,那么压缩算法就微不足道了。从根本上说,如果你说你只需要2个十进制数字,那么这意味着你需要大约1字节左右的数据每个浮点数。如果你的浮动都是32位的,那就意味着你最好的压缩是4:1。这够好吗?