[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Big empty file creation

Zhukov Pavel

6/28/2008 8:57:00 AM

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 :(

6 Answers

ts

6/28/2008 9:10:00 AM

0

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


Guy Decoux



ts

6/28/2008 9:17:00 AM

0

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
^^^^^^^^^^^^
IO#syswrite

Sorry,


Guy Decoux

Robert Klemme

6/28/2008 9:22:00 AM

0

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

Zhukov Pavel

6/28/2008 10:24:00 AM

0

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
>
>

i can't use dd, cause i want a cross-platform application

Eleanor McHugh

6/28/2008 11:39:00 AM

0

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 :(


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-...
----
raise ArgumentError unless @reality.responds_to? :reason



Robert Klemme

6/28/2008 12:04:00 PM

0

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

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