sturlamolden wrote: > But as long as the cygwin dll is there, it creates an overhead for any > system call. The worst overhead is associated with the Unix fork() > system call, which Cygwin must emulate as there are no Win32 > equivalent. In particular, a fork() on Unix will be optimized with > copy-on-write semantics in the kernel, but Cygwin cannot emulate that > as it has no access to the Windows kernel.
Cygwin doesn't do COW fork() for historical reasons. Windows 95/98 didn't expose support for such a thing, but NT, XP, etc do (pass NULL as the SectionHandle parameter to ZwCreateProcess or the older NtCreateProcess to do a COW duplicate of the calling process). Cygwin at one point had a fork() implementation using this in the development tree (or being discussed on the mailing lists) but decided not to use it since it wasn't much faster than full-copy fork for some reason, and it would've split the code for NT/95. -- http://mail.python.org/mailman/listinfo/python-list