6. Performance
Early on in the development
process, correctness was almost the entire emphasis. As Cygwin
became more complete, performance became a much important issue. We
knew that the tools ran much more slowly under Win32 than under Linux
on the same machine, but it was not clear at all whether to attribute
this to differences in the operating systems or to inefficiencies in
Cygwin.
The lack of a working profiler has made analyzing Cygwin's
performance particularly difficult. Although the latest version of
the library includes "real" itimer support, we have not yet found a
way to implement virtual itimers. This is the most reliable way of
obtaining profiling data since concurrently running processes aren't
likely to skew the results. We will soon have a combination of the
gcc compiler and the GNU profile analysis tool gprof working with
"real" itimer support which will help a great deal in optimizing
Cygwin.
Even without a profiler, we knew of several areas
inside Cygwin that definitely needed a fresh approach. While we
rewrote those sections of code, we used the speed of configuring the
tools under Win32 as the primary performance measurement. This choice
made sense because we knew process creation speed was especially poor,
something that the GNU configure process stresses.
These performance
adjustments made it possible to completely configure the development
tools under NT with Cygwin in only ten minutes and complete the
build in just under an hour on a dual Pentium Pro 200 system with 128
MB of RAM. This is reasonably competitive with the time taken to
complete this task under a typical flavor of the UNIX operating system
running on an identical machine.
|