This is the mail archive of the
mailing list for the Cygwin project.
Re: poor performance -- is Cygwin to blame?..
- From: "Timothy C Prince" <tprince at myrealbox dot com>
- To: mi+mx at aldan dot algebra dot com
- Cc: cygwin at cygwin dot com
- Date: Fri, 20 Dec 2002 22:54:23 +0000
- Subject: Re: poor performance -- is Cygwin to blame?..
From: Mikhail Teterin <email@example.com>
Date: Fri, 20 Dec 2002 14:52:49 -0500
Subject: poor performance -- is Cygwin to blame?..
I have a PVM based distributed application. One of the set of computing
tasks is initially distributed to each participating machine.
After that, each machine gets a new task when it returns the results for
the previous one. The Linux box outperforms the Windows XP on the same
hardware -- Dell Dimension 4500 Pentium4 @2.26 GHz -- at the ratio of
325:200... An earlier Dell Dimension 4400 with Pentium 4 @2GHz running
FreeBSD is proportionally slower than the Linux box, but still beats the
Win boxen by far..
Another (older) FreeBSD box running on PentiumII @450MHz is on par with
Win2K on Pentium3 @1GHz.
The computations are NOT memory intensive, but involve a lot of
``double'' number crunching (with log(3), pow(3), exp(3), et al).
The PVM and the computing program are compiled under CygWin on Windows.
The same optimizations flags (-O -march=pentium3 -fomit-frame-pointer)
are used with the same GCC 3.2.x compiler. (On the older FreeBSD, the
march is pentiumpro and the GCC is 2.95.2).
In my experience with MPI programs, comparing cygwin and linux, message passing takes longer under cygwin, but the time may be made up elsewhere, if the compilation is truly similar.
You mention that considerable time is spent in log(), pow(), exp() but leave us guessing how you implemented them. Then you imply that you think cygwin, rather than your math functions, is the speed determining factor, without giving us a means to judge.
The glibc versions of these functions are much faster than the newlib versions, particularly if you permit the use of <mathinline.h>. Neither approach the potential of pentium4, but the simplest way to speed them up on cygwin is to employ something like <mathinline.h>, and to provide your own pow() (or to use a compiler and library which targets pentium4).
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Bug reporting: http://cygwin.com/bugs.html