thanks a lot Bulat ! i ve seen the lib use System.Stream which i don't know... the fact you can discribe a layout then read a file according to the layout is just a feature i thought about. i'll definitely learn your library. minh thu 2006/4/6, Bulat Ziganshin <bulat.ziganshin@gmail.com>:
Hello minh,
Thursday, April 6, 2006, 12:41:32 PM, you wrote:
the code you give in the mail is +/- what i thought about ... is-it the fastest way ?
if you will say about your task and speed requirements, i will say how you can do it. the fastest way is to use asm :)
thank you also for your lib, i will read it later in the day.
when i said "would have to be the same" in previous mail, it's because i like to see haskell as a really high-level abstraction where you just say what you want, but not in which way to do it. in the examples (mines or yours), the programmer has a lot of choices ...
it was on advertising :) in Real World (tm) the things are more complex ;) on the other side, you can write something like this (using my library):
data TiffHeader = Tiff { id : Word8, height : Word16, width : Word16, .... }
main = do h <- openBinaryFD "filename" ReadMode header <- get h print (height header, width header)
and got what you want. here, all fields will be read as big-endian, to read them as little-endian you should use:
main = do h <- openBinaryFD "filename" ReadMode >>= openByteAlignedLE
another problem is that you have to allocate a buffer before reading the file, but (i m not a os expert) i think there is already some kind of plumbing (maybe another buffer) to read file. so maybe that in all cases, we're losing efficiency when reading a file ? also, if our buffer allocation is mandatory, the compiler could put the right code for us (i.e. choose the best buffer length).
with my lib, you can either read data directly from file (through implicit 512-byte buffer) or read whole file into the automatically allocated buffer with `readFromFile`. what is better - depends on what you plan to do with rest of file
-- Create new MemBuf filled with data from file h <- readFromFile "test"
-- Best regards, Bulat mailto:Bulat.Ziganshin@gmail.com