I need to create a huge file filled with anything. I’m doing it this way but it takes so long:
exit 1 unless ARGV.length > 0
File.open("file-#{ARGV[0]}M.txt", 'w') do |f|
(ARGV[0].to_i*1048576).times {f.write(1) }
end
What’s the best way of doing that (in platform independent way?)
In *nix, use
dd:If you want some content (instead of zeros) in the file, use
for
ifinstead of/dev/zeroIf you want a non-sparse file, use
and omit
seekUniversal method:
It is similar to the one you have, but it writes 1M at a time. You write 1 byte at a time which creates a lot of overhead for hard disk to search and write. Writing 1M at a time will be much faster. If you have an even faster hard drive (like 16M/s), you can try to increase 1M to 16M.