linux中的性能比较

时间:2014-03-12 21:40:55

标签: linux

我正在尝试在linux上的2个压缩库之间进行性能比较。 它们都接受文件,进行压缩然后写入输出文件。

由于我只对压缩感兴趣,我想在比较中删除文件i / o开销。

我可以这样做吗

cat <source file> > my_compression_program /dev/null?

我只是在start和and中的比较程序中添加时间戳。由于cat会将文件读入内存,因此我没有IO开销。

我的理解是否正确?

谢谢。

3 个答案:

答案 0 :(得分:1)

都能跟得上!

发出任何内容之前,

cat不会将整个文件内容缓冲在内存中。相反,它以内部缓冲区大小确定的块的形式读取和写入内容。

如果您希望从性能基准测试中删除I / O磁盘开销,我建议您在启动之前有足够的ram然后cat文件到/dev/null 基准:

cat source_file > /dev/null; my_compression_program < source_file > /dev/null

这将导致在程序运行之前首先将文件插入到内核的文件系统缓存中。然后它将从内存中流出。

答案 1 :(得分:0)

如果你的lib确实需要文件句柄,你可以使用tmpfs(在像操作系统一样的* nix上)。如果没有,你的测试程序应该只是初始化一些内存,可能是通过读取文件,并压缩它。在这两种情况下,您都应该考虑关闭交换测试。

答案 2 :(得分:0)

如果您没有足够的内存将文件保存在内存中,则必须执行I / O.

如果你确实有足够的内存,那么只需运行两次基准测试,linux会将文件保留在页面缓存中,参见