This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: 1.3.12-1: dramatic slowdown of compiled executable - 2nd attempt


On Thu, 4 Jul 2002 00:35:21 -0400 Christopher Faylor <cgf at redhat dot
com>  wrote:
> On Wed, Jul 03, 2002 at 11:21:27PM -0500, apjaworski@mmm.com wrote:
>>Then I replaced cygwin1.dll with version 1.3.10 and rerun the test.  I
got
>>10.7s total time and 8.7s user time.  This is almost 24-fold slowdown!
>
>Calm down.  How about if *you* do a little more analysis and find out
>where the slowdown occurs?  Is it in the fscanf code?  Is it simple
>reading from the disk?  Writing to the disk?  Does it go away if you
>stop using floats?
>
>You can also use strace to find out where any slowdown occurs.  Compare
and
>contrast it between the two versions.
>
>cgf
>
Thanks for the response.  The idea of doing more analysis myself was a very
good one.  In fact, I was planning to do something like that - I simply
rushed to report the problem first.

Here is some additional info.  First of all I got a couple of e-mail
responses ( I do not think they appeared in this mailing list).  One
response reported essentially no change of speed between 1.3.10 and 1.3.12
versions of the cygwin1.dll, and the other one reported essentially the
same slowdown as the one I observed.

I reran my program with some additional timing.  I also modified it to read
and write ints instead of floats.  here are the results:

DLL version 1.3.12-2
      floats      read: 58s   write: 192s (reading and writing 300,000 rows
of 12 numbers)
      iints read: 6s    write: 15s  (reading and writing 1,500,000 rows of
12 numbers)

DLL version 1.3.10
      floats      read: 3s    write: 9s   (reading and writing 300,000 rows
of 12 numbers)
      iints read: 6s    write: 15s  (reading and writing 1,500,000 rows of
12 numbers)

I also ran the strace program on my executables.  Strace produces loads of
output.  I tried to eliminate more or less common lines in the files
produced to make a reasonable comparison.  However, since I am not sure
what I am looking at, I cannot make any definite judgments.  One thing that
jumped at me was that 1.3.10 dll produces lines like, for example,

      environ_init: DISPLAY=:0.0
or
      normalize_win32_path: C:\cygwin\bin = normalize_win32_path (C:
\cygwin\bin)

for both int and float cases, whereas 1.3.12 produces similar lines
prepended by g for the int case only.  That is for the int case, the lines
above look like

      genviron_init: DISPLAY=:0.0
      gnormalize_win32_path: C:\cygwin\bin = normalize_win32_path (C:
\cygwin\bin)

I am not sure if this has any significance though.

Finally, on thought offered buy a guy who wrote me an e-mail reporting
similar slowdown.  He thinks that this might have something to do with the
fact that the new cygwin1.dll was compiled with gcc-3.1.  My version is
2.95.3-5.

Thanks again for your time.  For completeness I am attaching both my codes
(uu.c for floats and uu1.c for integers) along with the output of "cygcheck
-s -v -r > ccc.txt".

Andy

(See attached file: uu.c)(See attached file: uu1.c)(See attached file:
ccc.txt)

__________________________________
Andy Jaworski
Engineering Systems Technology Center
3M Center, 518-1-01
St. Paul, MN 55144-1000
-----
E-mail: apjaworski@mmm.com
Tel:  (651) 733-6092
Fax:  (651) 736-3122

Attachment: uu.c
Description: Binary data

Attachment: uu1.c
Description: Binary data

Attachment: ccc.txt
Description: Binary data

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]