[Gambas-user] fastest way to "zero-out" a huge binary file

kevinfishburne kevinfishburne at ...1887...
Sun Jan 24 04:21:33 CET 2010



Benoît Minisini wrote:
> 
> On Linux, If you seek and write past the real end of a file, then the file
> is 
> automatically extended.
> 
> So the simplest is writing where you want in the file only when you need.
> Just 
> don't do that randomly, to prevent the disk from seeking too much.
> 
> Most Linux file systems will reserve only pieces where something was
> written. 
> The other part of the file that are only zeros are virtual, and will not 
> consume your hard disk.
> 
> Anyway, why do you need 8Gb of data at once?
> 

Hi Benoît. I tried:

IF NOT Exist("~/.Littoral") THEN MKDIR "~/.Littoral"
Elevation = OPEN "~/.Littoral/Elevation.tmp" FOR INPUT OUTPUT CREATE
SEEK #Elevation, 8590196738
WRITE #Elevation, Chr$(0)

and it creates a 262,148 byte file. That's four bytes larger than a 256K
file. Checking the file in a hex editor it appears that all bytes are zero
except for byte 262,147, which is one.

For my purposes I prefer the file to be pre-allocated so that it can be as
contiguous as possible. I need to minimize read/write access times as much
as possible or my app may take all day to run.

The reason for such a large file is because I'm writing a terrain generation
app that generates a 65,537x65,537 vertex elevation map at 1 foot per vertex
resolution (12x12 miles). Each vertex uses a short, or two bytes, to
represent its elevation (65,537x65,537x2). I'm using a variation of the
diamond square algorithm modified by a user-supplied height field that
guides the terrain generation. Ultimately the resulting data file will be
stored server-side, so size isn't an object.

-----
Kevin Fishburne, Eight Virtues
www:  http://sales.eightvirtues.com http://sales.eightvirtues.com 
e-mail:  mailto:sales at ...1887... sales at ...1887... 
phone: (770) 853-6271
-- 
View this message in context: http://old.nabble.com/fastest-way-to-%22zero-out%22-a-huge-binary-file-tp27290885p27292087.html
Sent from the gambas-user mailing list archive at Nabble.com.





More information about the User mailing list