首页 > 解决方案 > awk比lz4解压慢

问题描述

我有 50 万个文件,每个文件 290 MB,主要由数字组成。我想(通常)过滤这些数据,但发现 awk 比解压缩慢。例如,

/usr/bin/time unlz4 bigfile.lz4 --stdout > /dev/null 0.20user 0.05system 0:00.44elapsed 57%CPU

/usr/bin/time unlz4 bigfile.lz4 --stdout | awk '{if ($26>120.) print}' > /dev/null 0.25user 0.25system 0:01.35elapsed 37%CPU

笔记:

我的结论是,使用快速解压缩格式(而不是更强大和更慢的压缩格式)并没有帮助lz4,因为即使是最简单的过滤awk也会成为瓶颈。

有没有人对此有任何见解或聪明的想法?有没有办法加快速度或者我达到了物理极限?

标签: awkbigdatathroughputlz4

解决方案


看起来您的文件足够小,以至于启动时间是您运行时的重要贡献者。简而言之,unzl4 | anything > /dev/null总是会比unlz4 > /dev/null因为管道的两端都需要在处理发生之前启动。因此,为管道情况测量更长的时间并不一定意味着消费者比生产者慢,或者您选择的压缩算法无关紧要。如果您想衡量更改压缩算法的影响,请更改压缩算法并进行衡量!


推荐阅读