I need to creat an empty file, over 10GB size.
Which way is fastest in file creation?
···
------
file<<"0"*file_size_in_bytes
-------
consme too much memory
-------
for i in 1...x
file<"0"file_size/x
end
-------
too slow
I need to creat an empty file, over 10GB size.
Which way is fastest in file creation?
------
file<<"0"*file_size_in_bytes
-------
consme too much memory
-------
for i in 1...x
file<"0"file_size/x
end
-------
too slow
But note that this will not work on all OS in case the file must be allocated. Seeking likely creates a sparse file.
Another approach is to use dd like
dd if=/dev/zero of=your_file bs=1048576 count=10240
That's probably as fast as it gets if you need blocks actually allocated to the file.
Kind regards
robert
On 28.06.2008 11:10, ts wrote:
Zhukov Pavel wrote:
I need to creat an empty file, over 10GB size.
Which way is fastest in file creation?use IO#sysseek followed which a IO#seekwrite
Pick a value of x that's a multiple of 512 bytes as this will match your data writes to the OS's disk cache. This may or may not gain you some performance advantage which will vary depending on the underlying cluster size of the file system, general filesystem overhead, disk fragmentation and a host of other properties that our outside your control as a programmer. Even coding is assembler creating a 10GB file with each byte zeroed is going to be a slow process...
Ellie
Eleanor McHugh
Games With Brains
http://slides.games-with-brains.net
On 28 Jun 2008, at 09:57, Zhukov Pavel wrote:
I need to creat an empty file, over 10GB size.
Which way is fastest in file creation?------
file<<"0"*file_size_in_bytes
-------
consme too much memory-------
for i in 1...x
file<"0"file_size/x
end
-------
too slow
----
raise ArgumentError unless @reality.responds_to? :reason
i can't use dd, cause i want a cross-platform application
On Sat, Jun 28, 2008 at 1:22 PM, Robert Klemme <shortcutter@googlemail.com> wrote:
On 28.06.2008 11:10, ts wrote:
Zhukov Pavel wrote:
I need to creat an empty file, over 10GB size.
Which way is fastest in file creation?use IO#sysseek followed which a IO#seekwrite
But note that this will not work on all OS in case the file must be
allocated. Seeking likely creates a sparse file.Another approach is to use dd like
dd if=/dev/zero of=your_file bs=1048576 count=10240
That's probably as fast as it gets if you need blocks actually allocated to
the file.Kind regards
robert
dd runs on my Linux, cygwin, Solaris, HP UX... - pretty cross platform I'd say.
The question is - do you need the whole file to be allocated or not? If yes, a solution is slow regardless of programming language.
Cheers
robert
On 28.06.2008 12:23, Zhukov Pavel wrote:
On Sat, Jun 28, 2008 at 1:22 PM, Robert Klemme > <shortcutter@googlemail.com> wrote:
On 28.06.2008 11:10, ts wrote:
Zhukov Pavel wrote:
I need to creat an empty file, over 10GB size.
Which way is fastest in file creation?use IO#sysseek followed which a IO#seekwrite
But note that this will not work on all OS in case the file must be
allocated. Seeking likely creates a sparse file.Another approach is to use dd like
dd if=/dev/zero of=your_file bs=1048576 count=10240
That's probably as fast as it gets if you need blocks actually allocated to
the file.
i can't use dd, cause i want a cross-platform application