4

Erlang 有文本压缩库吗?当处理非常长的字符串时,压缩字符数据可能是有利的。有没有人压缩文本或想办法在 Erlang 中做到这一点?

我正在考虑使用该zip模块,但不是使用文件,而是像这样在内存中工作:

compress(LargeText)->
    Binary = list_to_binary(LargeText),
    {ok,{_,Zipped}} = zip:zip("ZipName",[{"Name",Binary}],[memory]),
    Zipped.

然后,unzip当我需要它时,我会将文本放回内存中。像这样:

{ok,[{"Name",Binary}]} = zip:unzip(Zipped,[memory]).

我的 Erlang 应用程序应该是中间层的一部分,在该中间层中,大文本可能必须传入和传出存储系统。存储系统旨在存储大文本。为了优化存储,需要在发送之前对其进行压缩。假设文本值类似于CLOBOracle 数据库中的数据类型。我在想,如果我把拉链和拉链结合起来erlang:garbage_collect/0,我可以把它拉下来。

或者,如果在 Erlang 中不可能,也许可以使用system callvia os:cmd({Some UNIX script}),然后我会在 Erlang 中获取输出?如果有更好的方法,请展示它。

4

2 回答 2

8

Erlang有一个zlib 模块,它支持内存压缩和解压缩。

于 2012-07-16T15:21:17.783 回答
3

您可以考虑使用比 zip 快得多的snappy压缩,尤其是对于解压缩。

编辑:现在我经常使用LZ4,我对此非常满意。它有一个漂亮易读的代码,简单的格式,维护良好,甚至比 Snappy 更快。

于 2012-07-16T20:16:48.787 回答