软件测试于Ubuntu 16.04LTS

ubuntu环境下默认~/bin为个人环境变量目录

比较Linux系统自带gzip工具、多线gz压缩工具pigz、以及最新适合fastq压缩又快又小的软件GTX(自称只有传统gzip的1/6体积,实测单线程速度快了3倍,体积减少为gzip的2/3大小)

软件下载和安装

gzip系统默认,无须安装

pigz多线程压缩工具,可通过Ubuntu系统自带的新立德工具箱一键安装

sudo apt-get install pigz

GTX压缩工具,由于是新算法,压缩格式不是gz,而是gtz格式

# 下载软件
wget http://gtz.io/gtz_public_0.2.2k_ubuntu_release.tgz
tar zxvf gtz_public_0.2.2k_ubuntu_release.tgz
# 进入程序目录
cd gtz_public_0.2.2k_ubuntu_release/
# 显示帮助
./gtz -h
# 添加环境变量,一定要软链,否则程序无法运行
ln -s `pwd`/gtz ~/bin/

使用BGISeq500产生的PE100测序文件的一端作为测试。7.8GB,比较典型的测序样品大小。

不支持多线程的gzip

time gzip -c test.fq > test.fq.gz

多线程压缩pigz

# 注意-p一定要写下前面,后面无效
time pigz -k -p 32 test.fq
time pigz -k -p 8 test.fq
time pigz -k -p 1 test.fq
time pigz -k test.fq
time gtz test.fq
# 时间31s,压缩率24.3%(1.91/7.83G),默认输出文件为otu.gtz,不删除输入文件,CPU使用峰值为30线程
# 指定单线程数压缩至指定文件
time gtz test.fq -p 1 -o test.fq.gtz
# 8m,压缩率不变
time gtz test.fq -p 8 -o test.fq.gtz
# 1m21s,压缩率不变
time gtz test.fq -p 32 -o test.fq.gtz
# 32s,压缩率不变

三款软件不同线程下表现

线程 gzip pigz gtz
1 16m53s 23m46s 8m
8 - 3m12s 1m21s
32 - 47s 32s
96 - 50s 31s
Rate 36.5% 36.5% 24.3%

- 代表不支持多线程。线程不要给太多,超过30几乎没有意义,反而速度下降,还浪费大量计算资源。

解压大比拼

gunzip

time gunzip test.fq.gz 

unpigz

time unpigz test.fq.gz
time unpigz -p 32 test.fq.gz
time unpigz -p 8 test.fq.gz
time unpigz -p 1 test.fq.gz
gtz -d test.fq.gtz
gtz -d test.fq.gtz -p 32
gtz -d test.fq.gtz -p 8
gtz -d test.fq.gtz -p 1

解压时间大比拼

线程 gunzip unpigz gtz
1 1m32s 55s 12m22s
8 - 54s 1m51s
32 - 55s 53s
96 - 50s 39s

以标准的gzip为对照,点评另两另个并行软件pigz和gtz的优缺点;

在压缩上,单线程,pigz反而更慢50%,而gtz速度可以提高一倍;在多线程时,速度在前30线程内可线性提高,优势明显。gtz在速度和压缩率上更胜一筹, 30线程时时间和压缩比仍比pigz超50%,但绝对没有宣传的压缩率提高7倍这么牛

在解压上,unpigz也不支持多线程,但比gunzip略快。gtz由于压缩率略高,解压算法较复杂,在32线程时才比单线程解压的unpigz更快,这对计算需求大压力也比较大。

此外,gtz格式目前还是非主流,并不能被其它软件直接使用,因此只适合存储备份长期不用的文件,还是值得使用的。但常用软件目前不能直接使用此格式。

快速压缩解压还是要使用gz格式,主流软件支持好,解压速度快,占用资源少。

Reference

gzip中文帮助 http://man.linuxde.net/gzip

pigz官网 http://zlib.net/pigz/

GTX.Zip–基因领域唯一100%安全无误的企业级压缩大咖! https://mp.weixin.qq.com/s/gthwGjkk_jpylo2NLS469A

gtz源代码 https://github.com/genetalks/gtz

为鼓励读者交流、快速解决科研困难,我们建立了“宏基因组”专业讨论群,目前己有国内外2000+ 一线科研人员加入。参与讨论,获得专业解答,欢迎分享此文至朋友圈,并扫码加主编好友带你入群,务必备注“姓名-单位-研究方向-职称/年级”。技术问题寻求帮助,首先阅读 《如何优雅的提问》 学习解决问题思路,仍末解决群内讨论,问题不私聊,帮助同行。
image

学习扩增子、宏基因组科研思路和分析实战,关注“宏基因组”
image

点击阅读原文,跳转最新文章目录阅读
https://mp.weixin.qq.com/s/5jQspEvH5_4Xmart22gjMA

快速生成一个 文件 [root@evan-01 ~]# dd if=/dev/zero of=/home/evan1/big.txt bs=1M count=200 200+0 records in 200+0 records out 209715200 bytes (210 MB) copied, 1.16603 s, 180 M...
1. gzip 只能用一个cpu 压缩 , 解压 ,速度相当的慢,而 pigz 可以利用多cpu,速度 概提升6倍,cpu消耗提升8倍 -rw-r--r-- 1 root root 3.2G Mar 30 17:21 test.csv gzip 68s pigz 11s unzip 19s unpigz 6s 2. pigz 安装 添加 repo cd /etc/yum.repos.d; 上传附件epel.repo yum安装 yum -y install pigz .
unmpr458.dll UltraID3Lib.dll UDVDtmpmgr.dll UAboutboxRC.dll updateex.dll UPnPServiceImpl.dll