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 スクリプトVSから Linux cp コマンドへ

サイズ (300、400 MB) の 2 つのファイルをコピーしようとしましたが、上記のスクリプトはcp Linux コマンドよりもさらに高速であり、特に高速であることがわかりました。

これはどのように起こりますか?cpは完全に最適化されていると思います。

4

2 に答える 2

3

おそらくディスクキャッシュが原因です。実行してみてください

echo 3 > /proc/sys/vm/drop_caches

ベンチマークを実行する前にキャッシュをクリアする:)

私の推測では、それらは非常に近いはずです。もちろん、cp は ruby​​ よりも数ミリ秒速くコピーを開始するはずです。

于 2013-09-29T09:31:45.977 に答える
3

カーネル内のファイル システム ディスク キャッシュが原因で発生している可能性があります。

コマンドを数回繰り返すcpと、タイミングが異なると確信しています。

コマンドを (プレフィックスとして)使用して、timeベンチマークを行い、テストを数回繰り返します。

于 2013-09-29T06:13:39.890 に答える