1

首先,我知道在复制文件时,如果缓冲区大小更大,则复制过程会更快。

以下ruby​​ 脚本用于逐行编写(即缓冲区的大小将取决于行长):

input,output = ARGV[0], ARGV[1]

f_in = File.open input, "r"
f_out = File.open output, "w"

f_in.each {|line| f_out << line}

f_in.close
f_out.close

Ruby Script VS to Linux cp 命令

我尝试复制两个大小(300、400 MB)的文件,发现上面的脚本甚至比cp Linux 命令还要快,尤其快。

这怎么可能发生?我想这cp是完全优化的!

4

2 回答 2

3

这可能是由于内核内部的文件系统磁盘缓存而发生的。

我敢肯定,如果您重复多次cp命令,时间会有所不同。

使用time命令(作为前缀)进行基准测试并重复测试几次。

于 2013-09-29T06:13:39.890 回答
3

这可能是由于磁盘缓存,尝试运行

echo 3 > /proc/sys/vm/drop_caches

在运行基准测试之前清除缓存:)

我的猜测是它们确实应该非常非常接近,当然 cp 应该开始复制比 ruby​​ 快几毫秒。

于 2013-09-29T09:31:45.977 回答