Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

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: 2002-10-28 (16:13)
From: Yaron M. Minsky <yminsky@C...>
Subject: Re: [Caml-list] Strange slowness of input_line on mingw
I don't think any of your explanations explain it:  the lines weren't
particularly long and I was using ocaml 3.06 on both linux and windows. 
And I did the test multiple times, in different orders, so the caching
is not the issue.

And, of course, the weirdest thing is that this appears to be a
windows-specific problem.  On Linux, there speed difference between wc
and my program was quite small.  The x70 difference was only found on
the mingw builds I tried.  (I didn't try a straight cygwin version,
since I don't have that build system set up at present.)

So, any other ideas, or suggestion as to how to narrow down the problem?


On Mon, 2002-10-28 at 10:26, Xavier Leroy wrote:
> > 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 Archives:
> Bug reports: FAQ:
> Beginner's list:

To unsubscribe, mail Archives:
Bug reports: FAQ:
Beginner's list: