Norman Vine wrote:
On Thursday 26 May 2005 22:48, Andy Ross wrote:
Attached is a patch that pre-reads the directory contents ahead of
time (currently that is a list of length zero) to avoid having to hit
the kernel (twice!) for every airport.
Under Linux, this doesn't provide much speedup. But Windows (and
especially the cygwin libraries) has a somewhat less robust I/O system
in the face of many tiny operations. Hopefully it will help there.
Can someone on each of cygwin, mingw and/or MSVC try this out and see
if it helps?
Hmm could you please whare with us what isn't 'robust' about the Cygwin
It is slow compared to the Linux or Native Win32 file system in that it has to go
thru an extra translation layer inorder to get Unix behaviour under Win32
but ..... implying that Cygwin file operayions are not robust borders on pure fud
I think you just need to read Andy's words as a fancy way to say
"slower". :-) I'm sure he's not questioning the correctness of the results.
I know that you know all this, but for the sake of others, unix is
optimized to efficiently run a lot of little processes or threads at the
same time, all competing for the same cpu. It is also pretty well
optimized for lots of little disk accesses, and has a pretty efficient
file cataloging/indexing system (and linux has about 42 different
journaling file systems choices each with their own strengths and
weaknesses.) :-) Windows tends to do it's best when it's running one
really big application or loading one really big file ... i.e. you fire
up Word to edit your 100Mb power point presentation. That is often the
typical use for a windows machine ... one person doing one primary thing
at a time.
Unix was designed from the start to handle multiple users running many
little applications all at the same time and do it efficiently and
cleanly so each user thinks he/she has good performance and hopefully
doesn't notice anyone else is even using the same machine. Unix has
been doing this stuff for 40 years now so it's really good at it.
Windows started out as DOS which had no multitasking capability, had an
extremely rudimentary file system, and extremely rudimentary memory
management ... microsoft has tried to grow (or beat) their product into
a full fledged, modern, multitasking system, but we have all seen their
struggles over the years addressing issues like memory protection (so
one errant app can't take down the whole system), expanding their file
system limits, trying to develop some sort of sensible security model,
etc. They've gone from cooperative multitasking in the early versions
of windows to preemptive multitasking in the later versions. The file
systems have improved, memory management has improved, security and
protection has improved, pretty much everything has improved. But it as
been a process where the 800 pound gorilla has beat these features into
a rudimentary system (dos) where all these "modern" operating system
concepts were never really conceived or intended, rather than having
them designed in at the start. Clarity of design purpose is a luxury
unix has enjoyed ... although like windows, it has changed significantly
over the years to adapt to new needs and new ideas ...
So if you are running a lot of little applications all at the same time,
or trying to read/write a bunch of little files all at the same time,
unix generally seems to beat the pants off windows. That's not
necessarily a common scenario so don't take that as a knock against
windows. However, we do hit this at times with FlightGear so it can
bite windows users in the sense of much slower load times than the unix
people are seeing.
Curtis Olson http://www.flightgear.org/~curt
HumanFIRST Program http://www.humanfirst.umn.edu/
FlightGear Project http://www.flightgear.org
Unique text: 2f585eeea02e2c79d7b1d8c4963bae2d
Flightgear-devel mailing list