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应用程序应该是中间层的一部分,在中间层中,大型文本可能必须进出存储系统。存储系统用于存储大型文本。为了优化存储,需要在发送之前对其进行压缩。假设文本值类似于Oracle数据库中的CLOB
数据类型。我在想,如果我把拉链和erlang:garbage_collect/0
结合起来,我就能成功。
或者,如果这在Erlang中是不可能的,也许可以通过os:cmd({Some UNIX script})
使用system call
,然后我会获取Erlang的输出?如果有更好的方法,请出示。
Erlang有一个zlib模块,它支持内存中的压缩和解压缩。
您可以考虑使用比zip快得多的快速压缩,尤其是在解压缩时。
编辑:现在我经常使用LZ4,我对它很满意。它有一个漂亮可读的代码,简单的格式,维护良好,甚至比Snappy更快。