RamDiskとローカルディスクへの細かなファイル書き込みでの速度差
RamDiskの書き込み速度テスト
手元のmacでテストをしてみた。ざっくり4倍程度の速度差。もちろん環境によって変わってくるものですが、ファイルをキューとして大量に処理するシステムを作る場合は何はともあれRamDiskにしとけって感じですか。
require 'benchmark' def main(folder,times,sync = false) text = "text" * 1000 (0..times).each do (0..9999).each do |i| open("#{folder}/#{i}","w") do |f| f.sync = sync f.write("#{i}#{text}") end end (0..9999).each do |i| open("#{folder}/#{i}","r") do |f| f.read end end (0..9999).each do |i| File.delete("#{folder}/#{i}") end end end Benchmark.bm(26)do |x| x.report("RamDisk 10000") { main("/Volumes/RamDisk/",1) } x.report("RamDisk 100000") { main("/Volumes/RamDisk/",10) } x.report("LocalDisk 10000") { main("/Test/test/",1) } x.report("LocalDisk 10000 sync=true") { main("/Test/test/",1,true) } x.report("LocalDisk 100000") { main("/Test/test/",10) } x.report("LocalDisk 100000 sync=true"){ main("/Test/test/",10,true) } end
ruby1.8 user system total real RamDisk 10000 0.900000 4.480000 5.380000 ( 6.429629) RamDisk 100000 5.000000 24.400000 29.400000 ( 36.647185) LocalDisk 10000 1.030000 5.470000 6.500000 ( 23.601283) LocalDisk 10000 sync=true 0.980000 5.650000 6.630000 ( 24.994143) LocalDisk 100000 5.700000 32.000000 37.700000 (140.987971) LocalDisk 100000 sync=true 5.410000 31.380000 36.790000 (134.654420) ruby1.9(予想通り全くかわらん結果です) user system total real RamDisk 10000 1.240000 4.350000 5.590000 ( 6.377733) RamDisk 100000 6.810000 23.910000 30.720000 ( 34.758462) LocalDisk 10000 1.390000 5.930000 7.320000 ( 24.738030) LocalDisk 10000 sync=true 1.300000 5.800000 7.100000 ( 23.592067) LocalDisk 100000 7.830000 33.240000 41.070000 (148.604271) LocalDisk 100000 sync=true 7.510000 33.680000 41.190000 (149.324066)