On 2013-08-02 17:13, Jonathan M Davis wrote:
On Friday, August 02, 2013 19:49:54 Gary Willoughby wrote:
What library commands do i use to read from a structured binary
file? I want to read the byte stream 1, 2 maybe 4 bytes at a time
and cast these to bytes, shorts and ints respectively. I can't
seem to find anything like readByte().
I'd probably use std.mmfile and std.bitmanip to do it. MmFile will allow you to
efficiently operate on the file as a ubyte[] in memory thanks to mmap, and
std.bitmanip's peek and read functions make it easy to convert multiple bytes
into integral values.
- Jonathan M Davis
FWIW
i have to deal with big data files that can be a few GB. for some data analysis
software i wrote in C a while back i did some testing with caching and such. turns
out that for Win7-64 the automatic caching done by the OS is really good and any
attempt to speed things up actually slowed it down. no kidding, i have seen more
than 2GB of data being automatically cached. of course the system RAM must be
larger than the file size (if i remember my tests correctly by a factor of ~2, but
this is maybe not a linear relationship, i did not actually change the RAM just
the size of the data file) and it will hold it in the cache only as long as there
are no concurrent applications requiring RAM or caching. i guess my point is, if
your target is Win7 and your files are >5x smaller than the installed RAM i
would not bother at all trying to optimize file access. i suppose -nix machine
will do a similar good job these days.
/det