How to make reading an array from disk more efficient

S. Alexander Jacobson alex at i2x.com
Thu Dec 25 14:53:00 EST 2003


On Wed, 24 Dec 2003, Hal Daume III wrote:
> one other thing you might find useful is to read it imperatively and then
> use unsafeFreezeArray (i think that's the name) to get a pure array out of
> it.  since all you'll be doing is reading, this should work nicely for
> you.

I must say, this sort of reply is EXTREMELY DISTURBING.

It is ridiculous that one needs to get so intimate
with implementation issues just to read a file!

Is this inherent in Haskell or is it just that no
one has bothered to create a the Haskell
equivalent of BufferedReader?
<http://java.sun.com/j2se/1.4.2/docs/api/java/io/BufferedReader.html>

And if so, is there something about Haskell that
makes a Haskell implementation of such a lib
difficult?

-Alex-
_________________________________________________________________
S. Alexander Jacobson    	       mailto:me at alexjacobson.com
tel:917-770-6565     		       http://alexjacobson.com


> On Wed, 24 Dec 2003, andrew cooke wrote:
>
> >
> > Thanks.  I should have added that I will only use the array for reading
> > once it's created.  I don't mind whether creating is lazy or eager (it's
> > currently eager because I was fighting a space leak, but I think that was
> > down to some other error).
> >
> > I don't fully understand how either of the suggestions you make will speed
> > up creation, though (I guess allocating less memory is faster).  I'm
> > looking for a factor of tens of thousands improvement.  But I will try
> > what you suggest.
> >
> > Cheers,
> > Andrew
> >
> > PS Thanks for the very speedy reply and thanks to whoever maintains the
> > list archive for updating the archive for each message (I'm pretty sure it
> > used to be made daily, which was a nuisance if you wanted to forward URLs
> > to interesting discussions).
> >
> > Hal Daume III said:
> > > (1) use unboxed arrays, otherwise you're wasting too much space with
> > > pointers.  that is, unless you need laziness on the elements, which i
> > > don't think you do based on your list
> > >
> > > (2) (maybe) use imperative arrays; this will help you ensure that
> > > everything is being evaluated quickly.
> >
> >
>
> --
>  Hal Daume III                                   | hdaume at isi.edu
>  "Arrest this man, he talks in maths."           | www.isi.edu/~hdaume
>
> _______________________________________________
> Haskell mailing list
> Haskell at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell
>





More information about the Haskell mailing list