首先,我知道复制文件时,如果缓冲区大小较大,复制过程会更快。
以下 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
我尝试复制两个大小(300,400 MB)的文件,发现上面的脚本比 cp Linux命令更快,速度更快。
这怎么可能发生?我想cp
已经完全优化了!
答案 0 :(得分:3)
由于内核中的文件系统磁盘缓存,可能会发生这种情况。
我敢肯定,如果你多次重复cp
命令,时间会有所不同。
使用time
命令(作为前缀)进行基准测试并多次重复测试。
答案 1 :(得分:3)
可能是由于磁盘缓存,尝试运行
echo 3 > /proc/sys/vm/drop_caches
在运行基准测试之前清除缓存:)
我的猜测是他们应该非常非常接近,当然cp应该比ruby更快地复制几毫秒。