使用ruby复制文件的速度有多快 - 针对cp命令?

时间:2013-09-29 06:11:49

标签: c ruby linux cp

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

以下 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脚本 VS 到Linux cp命令

我尝试复制两个大小(300,400 MB)的文件,发现上面的脚本比 cp Linux命令更快,速度更快。

这怎么可能发生?我想cp已经完全优化了!

2 个答案:

答案 0 :(得分:3)

由于内核中的文件系统磁盘缓存,可能会发生这种情况。

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

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

答案 1 :(得分:3)

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

echo 3 > /proc/sys/vm/drop_caches

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

我的猜测是他们应该非常非常接近,当然cp应该比ruby更快地复制几毫秒。