问题标签 [lz4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
574 浏览

php - 在 PHP 中不使用 LZ4 压缩而不是 ZLIB 有什么缺点吗?

我试图寻找任何基准,更多关于 PHP LZ4 压缩的信息,但我找不到太多信息。

我看到了https://github.com/kjdev/php-ext-lz4 - 但我缺少基准,特别是:

  • 解压比
  • 解压/压缩时间
  • 解/压缩内存要求

我将大量数据存储为序列化(igbinary),我现在正在使用 gzcompress(),想知道是否应该切换到 lz4。

谢谢

0 投票
2 回答
2212 浏览

java - 使用java进行高效的LZ4多文件压缩

我采用了 adrien grand 的 java 存储库,为原始 LZ4 本机代码提供了 JNI。

我想在给定的输入目录下压缩多个文件,但是 LZ4 不支持像 java zip 包中那样的多个文件压缩,所以我尝试了另一种方法,我想将所有输入文件 tar 并将其作为输入传递给 LZ4 压缩器,我使用 Jtar java 包对所有输入文件进行去皮重处理。除了这个还有其他更好的方法吗?

我遇到了许多示例代码来压缩一些字符串以及如何正确实现 LZ4 压缩器和解压缩器。现在我想知道如何为多个文件实际实现它? 我还想澄清我是否朝着正确的方向前进。

在对所有文件进行去皮重后,根据示例代码使用说明,我现在必须将去皮重文件转换为字节数组以将其提供给压缩器模块。为此,我使用了 apache-common-ioutil 包。所以考虑到我有很多文件作为输入,这会导致 tar 的大小很大,在我看来,总是将其转换为字节数组似乎是无效的。我想先知道这是否有效?或者有没有比这更好地使用 LZ4 包的更好方法?

我遇到的另一个问题是最终结果。压缩去皮重的文件后,我会得到像 MyResult.lz4 文件这样的最终结果作为输出,但我无法使用存档管理器(我正在使用 ubuntu )解压缩它,因为它不支持这种格式。我也不清楚我必须在这里使用的存档和压缩格式。我也想知道最终结果应该是什么格式。所以现在我从用户的角度说,考虑一个我为用户生成备份的情况,如果我向他/她提供传统的 .zip、.gz 或任何已知格式,用户将处于自己解压的位置。据我所知,LZ4 并不意味着我期望用户也应该知道这种格式,对吧?看到这样的格式,他甚至可能会感到困惑。所以这意味着从 .lz4 到 .zip 格式的转换似乎也毫无意义。我已经将所有输入文件的去皮重过程视为一个耗时的过程,因此我想知道它对性能的影响有多大。正如我在 java zip 包中看到的那样,压缩多个输入文件似乎根本不是问题。所以在 lz4 旁边,我遇到了 Apache common compress 和 TrueZIP。我还遇到了几个关于它们的堆栈溢出链接,这帮助我学到了很多东西。到目前为止,我真的很想使用 LZ4 进行压缩,尤其是因为它的性能,但我遇到了这些障碍。任何对 LZ4 包有很好了解的人都可以为我的所有查询和问题提供解决方案以及简单的实现。谢谢。

我为包含许多文件的输入计算的
时间,去皮所需的时间:4704 ms
将文件转换为字节数组
所需的时间:7 ms 压缩所需的时间:33 ms

0 投票
1 回答
69 浏览

random - 文本压缩

如果我们使用较少的独特元素(如 (az) 而不是 (Az)),LZ 算法系列的效率会提高吗?

目前是否有任何其他对随机唯一元素有效的压缩算法?

0 投票
2 回答
2571 浏览

hadoop - 使用 Lz4 在 ORC 中进行 Hive 压缩

我正在RC尝试ORC使用LZ4. 我已经安装了 Hadoop-2.7.1 和 Hive-1.2.1。在这种情况下LZ4,我可以RC毫无问题地压缩文件。但是,当我尝试使用 加载ORC文件中的数据时LZ4,它不起作用。我创建了ORC如下表:

但是在加载数据时,它给出了以下错误:

我已经使用SnappyZlib使用相同的命令,它工作正常。但问题仅在于LZ4. 不知是什么原因?

0 投票
2 回答
1479 浏览

c++ - 如何使用 Lz4 库解压缩小于原始大小?

我正在使用 LZ4 库,并且在解压缩数据时使用:

我只需要n原始编码N字节的第一个字节,其中n < N. 所以为了提高性能,只解压缩原始缓冲区的一部分是有意义的。

我想知道我是否可以传递n而不是传递NoriginalSize函数的参数?

我最初的测试表明,这是不可能的(我得到了错误的解压缩数据)。虽然也许有一种方法,例如 ifn是 some 的倍数CHUNK_SIZE?所有原始N字节都通过 1 次调用 compress 函数进行压缩。

0 投票
1 回答
365 浏览

perl - 使用 Perl 解压缩 LZ4 blob

我在 SQLite 数据库中有一个表,它存储用 LZ4 算法压缩的 blob。我正在尝试使用 Compress::LZ4 中的解压缩/解压缩函数,但没有取得任何成功。

示例 SQLite db 可以从这里下载

这是我连接到 SQLite db 并获取 blob 的方式:

对于我在此示例代码 (data_fk=6) 中选择的特定 blob,dd 输出以下内容:

"LZ4\1>\1\0\0\xF7\xD6df\xF1mBXML\1\xA1\aVersion\xA1\4Type\xA1\2Id\xA1\3Ref\xA1\4Size\xA1\3use\xA1\4expr\xA1\ 5value\xA1\4data\xA1/序列化\xA1\aPoints3\xA1\tuser_E\0\xF0\16\bvertices\xA1\6double\xA1\bhas_attr\xA1\16\n\0\xC7object_ids\xA1\n\f \0\xF1M\4item\xA1\tis_active\xA0~B\20\n\22\6\4\x8C\1\0\0\0\6\2\xAA\24\6\0\xA4\x82 \x88\2\x80\x82\x82\xA6B\26\6\b\x80\1B\30 \6\b\x88\2\3B\32\1\x93\6\0\0\0`\ xACu\xCF\xBF\0\0\0\0\xCC\xF8\xC2?\0\0\0\0\0\x004\@\0\0\0 \xAA\xEF\xA9\20\x001h \xC5\xB1\b\0\xD0\0\0\$\@\1B\34\x85B\36\x87B C\0\xF0\aB\"\6\0\x88\3B\$\x85\ 1B\"\6\0\x88\3B\$\x85\1\1\1"

但是解压缩/解压缩函数只返回 undef。未压缩的数据应该类似于(以下输出由 XML 转换器生成):

从这个 SQLite 数据库获取未压缩的 blob 数据的正确方法是什么?

0 投票
4 回答
7708 浏览

go - 如何使用 lz4 压缩和解压文件?

我想在 Go 中使用 lz4 算法压缩和解压缩文件。有没有可用的软件包来做到这一点?我搜索并找到了一个名为 https://github.com/pierrec/lz4的包

我是新手,我不知道如何使用这个包来压缩和解压缩文件。

我需要使用这个包将文件压缩为二进制格式,并使用 Go 将二进制文件解压缩为原始文件。

0 投票
0 回答
876 浏览

.net - 使用 lz4net 解压缩 LZ4 压缩字符串

我想使用 NuGet https://www.nuget.org/packages/lz4net/提供的 lz4net 库解压缩 LZ4 编码的字符串,该库的 GitHub 站点是https://github.com/MiloszKrajewski/lz4net

我对流和这个库都不熟悉,但到目前为止,这是我的代码:

问题:

  1. lzStream 的长度为-1,所以我无法从中读取,我该怎么做?
  2. 我只能实例化具有固定长度的 outputBytes,我想让它与需要的一样大
0 投票
1 回答
1039 浏览

c++ - LZ4 没有正确压缩字符串

最近,我尝试将无损数据压缩集成到我的游戏引擎中以加载资产;但是这个简单的压缩示例似乎无法正常工作。有什么建议么 ?这是我的代码:

这是输出。显然,您可以看到它是错误的(缺少部分字符串):

编辑 解压缩数据时,仅出现“Hi”部分:其余为随机字符/无字符

编辑 2根据西蒙的建议,我更改了代码;但解压代码后;我只得到你好!(之后什么都没有);这是更新的代码:

0 投票
0 回答
1196 浏览

python - 由于无效的命令标志,Windows 在 pip 安装时编译失败

我试图在我的 Windows 机器上使用 pip 从 PyPi 安装 lz4 包。这个包没有上传任何轮子,所以它需要在本地编译源代码。我安装了 Visual C++ for Python 编译器。

我跑了:

这给了我一个编译错误:

从 PyPi 下载 tar 文件时,我可以看到-W-Wundef编译器参数被显式设置,但这些不是 MSVC 编译器的合法标志。

我从源代码的本地副本中删除了这些,并针对修改后的代码运行设置。

我仍然遇到 stdint.h 丢失的问题,在其他地方讨论过,但在解决安装成功后。

我的问题是:

  • 我在这里遗漏了什么,我的设置是否有问题意味着构建失败?
  • 有没有办法以特定于平台的方式在 setup.py 中指定命令参数?
  • 我可以在lz4 PyPi 页面上看到构建正在通过。这实际上意味着什么?