
14 Mar
2007
14 Mar
'07
6:27 p.m.
pete-expires-20070513:
When using readFile to process a large number of files, I am exceeding the resource limits for the maximum number of open file descriptors on my system. How can I enhance my program to deal with this situation without making significant changes?
Read in data strictly, and there are two obvious ways to do that: -- Via strings: readFileStrict f = do s <- readFile f length s `seq` return s -- Via ByteStrings readFileStrict = Data.ByteString.readFile readFileStrictString = liftM Data.ByteString.unpack Data.ByteString.readFile If you're reading more than say, 100k of data, I'd use strict ByteStrings without hesitation. More than 10M, and I'd use lazy bytestrings. -- Don