1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
require 'benchmark'
File.delete("big.txt") rescue 0
File.delete("big_lines.txt") rescue 0
Benchmark.bm do |x|
puts "write big.txt"
x.report {
File.open("big.txt", "wb") { |f|
10_000_000.times { f.write('x') }
}
}
puts "write big_lines.txt"
x.report {
File.open("big_lines.txt", "wb") { |f|
2.times {
1_000.times { f.write('x' * 1000 + "\r\n") }
1_000.times { f.write('x' * 1000 + "\r") }
1_000.times { f.write('x' * 1000 + "\r\n") }
1_000.times { f.write('x' * 1000 + "\n") }
1_000.times { f.write('x' * 1000 + "\r\n") }
}
}
}
["big.txt", "big_lines.txt"].each do |file|
puts "read #{file}"
[
[100, 1, 10_000_000],
[100, 10, 1_000_000],
[100, 1_000, 10_000],
[100, 10_000, 1_000],
[ 10, 100_000, 100],
[ 10, 1_000_000, 10],
[ 1, 10_000_000, 1],
].each { |n, m, s|
x.report("#{n} x #{m} x #{s}") {
File.open(file, "r") { |f|
n.times {
f.seek(0);
m.times {
f.read(s)
}
}
}
}
}
end
end
|