On Wed, 1 Jul 2009 12:06:22 -0400, Christopher Faylor <cgf-use-the-mailinglist-ple...@cygwin.com> wrote: > On Wed, Jul 01, 2009 at 05:32:14PM +0200, Vincent R. wrote: >>On Wed, 1 Jul 2009 11:11:56 -0400, Christopher Faylor >><cgf-use-the-mailinglist-ple...@cygwin.com> wrote: >>> On Wed, Jul 01, 2009 at 06:55:35AM +0100, Andy Koppe wrote: >>>>2009/6/23 Christopher Faylor: >>>>>>If posix_spawn() ever gets implemented in Cygwin to >>>>>>avoid the slowness of fork(), /bin/sh might well change to the first >>>>>>shell that supports it. >>>>> >>>>> It's really somewhat of an urban myth about Cygwin's fork being slow. >>>>> Cygwin's exec is also pretty slow. ??I'm not really sure that >>>>> posix_spawn >>>>> would cause any kind of performance improvement. >>>> >>>>Ah, right. So is it Windows' CreateProcess() itself that's slow? Or is >>>>it some of the additional stuff that exec() needs to deal with? >>>>Signals? The hidden console? >>> >>> The majority of the exec code is in spawn.cc - spawn_guts(). You can >>> see for yourself that this is not a simple function. >>> >>> Just remember that neither fork nor exec have native Windows analogues. >> >>About that I wanted to make some benchmark with strace and give you >>figures about cygwin running on Windows 7 64 bits and Windows XP 32 >>bits.Unfortunately I have only installed natively Windows 7 and I did >>my test in a Virtual machine but I got some weirds figures where it was >>also very slow on XP. If some people have Windows XP and windows vista >>(32 or 64 bits) on the same machine it could be interesting to provide >>some benchmarks. >> >>and when I say benchmark I want exactly the same machine running the >>same cygwin version or it won't be very relevant. > > No one is asking for benchmarks! However, if we were, strace is > particularly unsuitable for that task. If you want to see improvements > happen then dive into the code and offer specific suggestions. > > cgf
I did but maybe it would be important to know for sure that the problem comes from fork and exec because I think you are sharing the same code with mingw and it runs a lot faster with it. So before I dive : 1) I want to be sure that fork/exec are the reason 2) See the differences with mingw. I don't think there lots of different ways of implementing that two functions -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple