我有一个想法可以快速对一些减压程序进行基准测试。例如,对于gz,我将运行以下命令:
timeout 10 zcat foo.gz | wc -c
这将测量解压缩器可以在10秒内提取的数据量。
唯一的问题是,它不起作用:因为zcat被杀死,wc也被杀死,所以我没有得到字节数,只是一条Terminated
消息。
因此,问题是:有没有一种方法可以通过某种方式阻止信号来从wc获取计数,或者使用替代方法而不是wc来打印结果,即使它获得了术语信号也是如此。
当然,还有其他选择:
写入临时文件:
timeout 10 zcat foo.gz > /dev/shm/x ; du -sb /dev/shm/x ; rm -r /dev/shm/x
问题是使用大量内存,并且可能会降低性能。使用ulimit代替:
ulimit -t 10; zcat foo.gz | wc -c
这也可以,但是仅测量cpu时间,因此不会测量由于I / O(例如,由于压缩效果更差,需要从磁盘读取更多字节)而导致的速度降低。制作较小的测试文件:
嗯,这当然可以工作,并且可能是最好的解决方案。但是,这会创建很多临时文件。
6
当我读到“破坏管道和厕所”时,我想起初您的管道有问题!
—
dr01 2015年