
On Tue, Mar 18, 2008 at 11:03:23PM +0300, Bulat Ziganshin wrote:
Hello David,
Tuesday, March 18, 2008, 10:15:48 PM, you wrote:
Incidentally, you'll probably find that for large files, using mmap on Windows is a huge loser when compared with lazy bytestrings. As far as I understand, on Windows when a file is mmapped, its entire contents are immediately loaded into memory, so if you mmap a file that is larger than your memory, you pay a huge penalty on Windows.
it's definitely not true, at least for my own experiments. although i never tried o map entire file to memory, but used only small window into file. mmaping for windows and linux implemented in http://www.haskell.org/library/StreamsBeta.tar.gz where it used just to make i/o faster. at least i tried but found undesirable effects, but not one you have mentioned
I've never tried this (since I don't have windows), but it's what I've been told. And no, you wouldn't have noticed unless you tried to mmap a large file in its entirety. It's a major difference in behavior, though, between posix and windows mmap. The former behaves essentially like a faster, better version of lazy IO (provided you don't try to modify the file in-place) that is a major improvement when under tight memory pressure (because it's file-backed memory). The latter is quite the opposite. -- David Roundy Department of Physics Oregon State University