文件压缩与解压性能对比 lzop, gzip

这篇具有很好参考价值的文章主要介绍了文件压缩与解压性能对比 lzop, gzip。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关于 lzo

LZO is a portable lossless data compression library written in ANSI C.

LZO是一个超级强大的压缩库,最大的特点就是压缩/解压速度极快。LZO 除了极快的压缩和解压速度以外,最重要的特性就是就地解压,即不使用临时文件,这对于体积较大的文件来说,例如光盘映像,是非常合适的。另外,解压无需内存,解压速度与压缩率无关,这两个也是特别棒的特性,相比较小的压缩率(现在随着大硬盘的普及,压缩率与压缩时间相比,前者显得不再那么重要了),速度上的提高带来的优势无疑太巨大了!

关于 lzop

lzop is a file compressor which is very similar to [gzip](http://www.gzip.org/). lzop uses the [LZO data 
compression library](http://www.oberhumer.com/opensource/lzo/) for compression services, and its main 
advantages over gzip are much higher compression and decompression speed (at the cost of some compression 
ratio).

直接yum安装

> yum install -y lzop

或者编译安装

先要安装LZO库

> cd /usr/local

> wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.10.tar.gz

> tar -xzf lzo-2.10.tar.gz

> cd /usr/local/lzo-2.10

> ./configure --enable-shared

> make && make install

从输出的信息看,lzo库被安装在了 /usr/local/lib

将库文件复制至/usr/lib,如果是64位系统则是 /usr/lib64
> cp /usr/local/lib/*lzo* /usr/lib64/

否则会在后续执行lzop命令时出现类似如下的提示 lzop: error while loading shared libraries: liblzo2.so.2: cannot open shared object file: No such file or directory

> ls /usr/lib64/*lzo*
/usr/lib64/liblzo2.a  /usr/lib64/liblzo2.la  /usr/lib64/liblzo2.so  /usr/lib64/liblzo2.so.2  /usr/lib64/liblzo2.so.2.0.0

编译安装 lzop工具

> cd /usr/local

> wget http://www.lzop.org/download/lzop-1.04.tar.gz

> tar -xzf lzop-1.04.tar.gz

> cd lzop-1.04

> ./configure

> make && make install

> lzop -V
                          Lempel-Ziv-Oberhumer Packer
                           Copyright (C) 1996 - 2017
lzop v1.04         Markus Franz Xaver Johannes Oberhumer         Aug 10th 2017

lzop version: v1.04, Aug 10th 2017
lzop build date: Feb 23 2023 11:18:26

使用

> lzop --help
                          Lempel-Ziv-Oberhumer Packer
                           Copyright (C) 1996 - 2010
lzop v1.03         Markus Franz Xaver Johannes Oberhumer          Nov 1st 2010

Usage: lzop [-dxlthIVL19] [-qvcfFnNPkUp] [-o file] [-S suffix] [file..]

Commands:
  -1     compress faster                   -9    compress better
  -d     decompress                        -x    extract (same as -dPp)
  -l     list compressed file              -I    display system information
  -t     test compressed file              -V    display version number
  -h     give this help                    -L    display software license
Options:
  -q     be quiet                          -v       be verbose
  -c     write on standard output          -oFILE   write output to 'FILE'
  -p     write output to current dir       -pDIR    write to path 'DIR'
  -f     force overwrite of output files
  -n     do not restore the original file name (default)
  -N     restore the original file name
  -P     restore or save the original path and file name
  -S.suf use suffix .suf on compressed files
  -U     delete input files after successful operation (like gzip and bzip2)
  file.. files to (de)compress. If none given, try standard input.
lzop -v test # 创建test.lzo压缩文件,输出详细信息,保留test文件不变
lzop -Uv test # 创建test.lzo压缩文件,输出详细信息,删除test文件
lzop -t test.lzo # 测试test.lzo压缩文件的完整性
lzop –info test.lzo # 列出test.lzo中各个文件的文件头
lzop -l test.lzo # 列出test.lzo中各个文件的压缩信息
lzop –ls test.lzo # 列出test.lzo文件的内容,同ls -l功能
cat test | lzop > t.lzo # 压缩标准输入并定向到标准输出
lzop -dv test.lzo # 解压test.lzo得到test文件,输出详细信息,保留test.lzo不变
lzop -d test.lzo # 解压,每个文件将与压缩文件放在同一个目录中
lzop -x test.lzo # 将压缩文件解压缩到当前工作目录。这和 -dPp 一样。

压缩级别:从 1 到 9,1表示压缩的最快,9表示压缩的最多,默认是3,数值越大压缩比例越大同时越慢。解压缩速度不受压缩级别的影响。

压缩与解压

生成一个文件 pg135.txt,大小3.16M

> time gzip -3 pg135.txt
real    0m0.097s
user    0m0.078s
sys     0m0.031s

> time lzop pg135.txt
real    0m0.030s
user    0m0.016s
sys     0m0.016s

> time gzip -d pg135.txt.gz
real    0m0.036s
user    0m0.031s
sys     0m0.000s

> time lzop -d pg135.txt.lzo
real    0m0.026s
user    0m0.000s
sys     0m0.031s
压缩格式 文件 大小 压缩时间 解压时间
None pg135.txt 3.16M
GZIP pg135.txt.gz 1.32M 0.097s 0.036s
LZO pg135.txt.lzo 1.96M 0.030s 0.026s

总结:gzip 的压缩率高一些,但是压缩和解压时间比较长。

gzip 参数。

选项 含义
-c 将压缩数据输出到标准输出中,并保留源文件。
-d 对压缩文件进行解压缩。
-r 递归压缩指定目录下以及子目录下的所有文件。
-v 对于每个压缩和解压缩的文件,显示相应的文件名和压缩比。
-l 对每一个压缩文件,显示以下字段:压缩文件的大小;未压缩文件的大小;压缩比;未压缩文件的名称。
-数字 用于指定压缩等级,-1 压缩等级最低,压缩比最差;-9 压缩比最高。默认压缩比是 -6。

gzip压缩默认会删掉源文件,不过也可以通过参数保留源文件。

gzip -c big_data.log > big_data.log.gz

无论是 gzip 还是 lzop 都是压缩工具,目标是文件,因此不会作用于目录上,通常的做法是先使用 tar 命令将目录打包为 .tar 文件,然后执行压缩,最终得到 .tar.gz文件。

分块与并行处理

lzo 是基于block分块的(约256K),这样他就允许数据被分解成chunk,可以使用并行处理,流式处理。

gzip 压缩方式不能被分块,因此无法并行处理。

bzip2 压缩非常的快,也可以被分块,但是其解压过程非常非常的缓慢。

所谓分块并并行处理,就是先将大文件分块,然后由多个下游程序并行来处理,也就是 mapreduce,那么并行处理的结果需要能够按照正确的顺序合并到一起。

综合考虑

如果要求并行处理,压缩和解押压速度快,那么就选 lzo;如果单纯的追求压缩比,那么选 gzip。

其他

golang封装lzo:https://github.com/cyberdelia/lzo

lzo 压缩算法原理 https://blog.csdn.net/wo6694458/article/details/76099768

gzip 压缩算法原理 https://www.jianshu.com/p/4033028e5570

参考

https://blog.thinkeridea.com/201906/go/compress_file_io_optimization1.html文章来源地址https://www.toymoban.com/news/detail-435423.html

到了这里,关于文件压缩与解压性能对比 lzop, gzip的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • linux_文件压缩、文件解压(gzip命令、gunzip 命令、bzip2命令、bunzip2命令、tar命令、rar命令、zip命令)

    接上一篇:linux用户管理(查看在线用户who命令、创建用户adduser命令、创建用户组groupadd命令、查看用户组groups命令、删除用户、设置用户密码passwd命令) 本次来分享怎样在 linux中压缩和解压文件夹 ,在linux中压缩解压的方式有 5种 ,分别是 gz格式压缩解压、bz2格式压缩解压、

    2024年02月01日
    浏览(98)
  • Linux 打包压缩解压指令 gzip bzip2 tar

    总结自 鸟哥Linux私房菜 Linux压缩文件的扩展名大多是:“.tar, .tar.gz, .tgz, .gz, .Z, .bz2, *.xz”, 不同压缩文件使用了不同的算法,不能通用压缩或解压 常见扩展名: Linux上常见的压缩指令就是 gzip, bzip2 以及最新的 xz ,至于 compress 已经退流行了。为了支持 windows 常见的 zip,其实

    2024年02月05日
    浏览(42)
  • linux中的压缩解压命令:gzip,tar,zip,bzip2

    命令名称:gzip 语法:gzip  文件 功能:压缩文件 压缩后文件格式:.gz 例子1  如上图所示,先用touch命令创建一个新文件file1,然后使用gzip压缩该文件。 例子2 如上图所示,先用cp命令将/etc/services文件复制到/root目录下并改名为file2,通过ls -l 命令可见该文件的大小为670293B,

    2024年02月05日
    浏览(98)
  • 【微信小程序】引入第三方库poke对GZIP压缩数据进行解压

    使用 npm 包管理工具: 首先,在小程序的根目录下执行 npm init 初始化项目,生成 package.json 文件。 然后,通过 npm 安装 pako: npm install pako 。 接下来,在小程序的根目录下创建一个名为 miniprogram_npm 的文件夹。 将 node_modules/pako 文件夹复制到 miniprogram_npm 文件夹中。 在需要使用

    2024年02月08日
    浏览(55)
  • Ubuntu使用gzip与bzip2与rar和tar压缩解压

    目录 1、gzip压缩解压 2、bzip2压缩解压 3、tar压缩解压 tar.gz 4、zip压缩解压 因为都是系统自带的我们不需要安装; ls 看一下目录当前的文件,创建一个 touch 123.txt 文件; 原文件消失,压缩解压 gzip 进行压缩,(“ gzip 123.txt ”),这样就压缩完毕了; gzip 进行解压,(“ gzip

    2024年02月05日
    浏览(54)
  • Linux下的打包(tar)、压缩(gzip / bzip2)、解压gz / bz2 / xz

    Linux中打包和压缩是两个过程,分别有对应的指令来执行这两步操作。 打包 指的是将一堆文件装到一个大袋子里, 压缩 则是把这个袋子里的空气给抽干。 目录 1、打包命令 tar 2、打包压缩一步到位的方式 (1) 方式一:tar 与 gzip 相结合 (2) 方式二:tar 与 bzip2 相结合 3、总结

    2024年02月13日
    浏览(62)
  • nginx开启Gzip压缩,Vue性能优化之使用gzip压缩打包

    不管是vue项目还是react项目在使用webpack打包之后都会生成一个动辄一两兆甚至更大的js文件,在某些情况下严重影响项目性能,打开页面的时候白屏时间会很长,本文将介绍如何使用gzip压缩打包,主要是nginx部署的配置,非常重要,我查阅了很多文章基本都没用说清楚甚至错

    2024年02月02日
    浏览(44)
  • Linux中_使用tar_gzip_zip_rar_命令_打包和解包_压缩和解压

    1.3.1、到当前目录下 1.3.2、到指定目录下 3.1.1、压缩当前目录: 3.1.2、压缩指定目录: 3.2.1、到当前目录 3.2.2、到指定目录 4.2.1、压缩文件本身: 4.2.2、递归压缩,将指定目录下所有文件和子目录一并压缩:

    2024年02月04日
    浏览(60)
  • vue前端性能优化之分包策略、异步组件、Gzip压缩

    目录 一、Gzip压缩 二、异步组件 三、分包策略 最后           项目的性能优化是有完整项目经历的开发者都会遇到得一个问题。这是整个项目开发最后的一步,也是最关键的一步,做一个项目并不是单单完成功能就算结束了,作为开发者,更要站在用户角度去进行项目体

    2024年02月09日
    浏览(51)
  • 【linux】解压.gz文件 报错 gzip:stdin:not in gzip format(已解决)

    目录 1、问题: 2、分析原因 3、解决办法 在解压一个以【.gz】(注意不是.tar.gz)结尾的压缩包时,遇到报错 【gzip:stdin:不是gzip格式】 翻译一下问题:【gzip:stdin:不是gzip格式】 解压命令:sudo tar -zxvf + 包名 分析:这个问题导致的原因有两个: 1) 原因一、 压缩包受损

    2024年02月13日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包