Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] Strange slowness of input_line on mingw
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Xavier Leroy <xavier.leroy@i...>
Subject: Re: [Caml-list] Strange slowness of input_line on mingw
> I've noticed some strangely slow behavior from input_line on mingw.  I
> wrote a simple loop to scan through a file, and found that for a given
> file, it took about 10 seconds to run, whereas wc -l took only a small
> fraction of a second -- the difference was about a factor of 70.  This is
> on a W2K machine using mingw.  On the other hand, using the same file on a
> linux box, the difference between wc -l and my code was only about a
> factor of 3.
> Any ideas where the big difference might be coming from?   The code I
> wrote is attached below.

input_line has to work a bit harder than wc because it actually copies
the data to strings.  However, on my tests with your program (Linux,
OCaml 3.06), this makes essentially no difference: both your code and
wc run at about 50 Mb/s.  

Two possible explanations:

1- The file wasn't in the file cache when you timed your program; then you
timed wc, at which time the file was in the file cache.  In other
terms, you're measuring the difference between a "cold cache read" and a
"warm cache read".  Try measuring wc first :-)

2- Your file contains very long lines and you're using OCaml 3.04 or
earlier.  There was a performance bug in pre-3.06 versions causing
input_line to run slowly on very long lines (100000 characters or
more).

- Xavier Leroy
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners