Subject: RE: Cygwin is SLOW
From: "Tony Arnold" <[email-masked]>
To: <[email-masked]>
Date: Wed, 17 Jul 2002 13:56:11 +0100

I've just tried Bernard's scripts on both Cygwin PERL and ActiveState
PERL. I'm running Windows XP on a Celeron 466MHz box with 256Mb memory.

Cygwin PERL

Here is the PERL version info:

This is perl, v5.6.1 built for cygwin-multi

And here is the output from the two scripts:

[506]zzalsaca@ACA-VNT$ ./fastchm.pl 
327.4 chmods per sec
[507]zzalsaca@ACA-VNT$ ./slowchm.pl 
18 chmods per sec

Activestate PERL (a rather old version, I realise!)

Here is the PERL version info:

This is perl, v5.6.0 built for MSWin32-x86-multi-thread
(with 1 registered patch, see perl -V for more detail)

Copyright 1987-2000, Larry Wall

Binary build 618 provided by ActiveState Tool Corp.
http://www.ActiveState.com
Built 21:03:54 Sep 13 2000

And here is the output from the two scripts:

C:\users\zzalsaca\tmp>perl fastchm.pl
1588 chmods per sec

C:\users\zzalsaca\tmp>perl slowchm.pl
6.4 chmods per sec

So Activestate seems to be much faster using its internal chmod
function, but much slower if invoking an external chmod command.

I should point out that the Cygwin version was run from within a bash
shell running under rxvt whereas the Activestate was running from a cmd
prompt window.

Hope this is of use. I'll let other interpret the results!

Regards,
Tony.

> -----Original Message-----
> From: [email-masked] 
> [mailto:[email-masked]] On Behalf Of Bernard A Badger
> Sent: 16 July 2002 19:45
> To: [email-masked]
> Subject: RE: Cygwin is SLOW
> 
> 
> I thought this was already clear, but here goes:
> The slow script I wrote (modified) invoked the perl 
> "system()" function. The system function invokes the 
> "chmod.exe" PROGRAM. (BTW, system("string arg1 arg2") will 
> exec() the program directly, and not invoke a shell, because 
> it doesn't see any "shell metacharacters". Otherwise you've 
> got even more overhead because you have to invoke a shell (sh 
> or cmd.exe or command.com, it depends!) and pass the string to it.)
> 
> The perl function chmod(mode, @files) will change the mode on 
> a list of files. This is done using a system call, rather 
> than exec'ing a program. 
> Hence, it is much faster.
> 
> When perl system() exec's "chmod.exe", it first has to FIND 
> it. That is, it searches each directory in the PATH variable 
> until it finds chmod.exe (or .com, or .bat...). You could put 
> in an absolute path to save time there. My PATH, for example 
> has several Network mapped drives in it.  Very slow!
> 
> I don't happen to have a native Win32 Perl, e.g., ActiveState 
> Perl, installed here, so I did not make a comparison test.
> 
> To see if Cygwin is really "slow",
> someone with both kinds of perls should run the scripts.
> 
> > -----Original Message-----
> > From: [email-masked] [mailto:[email-masked]]On 
> > Behalf Of BiDuS
> > Sent: Tuesday, July 16, 2002 12:03 PM
> > To: [email-masked]
> > Subject: RE: Cygwin is SLOW
> > 
> > 
> > I've tried both slow and fast perl scripts on my machine 
> (AMD XP1700, 
> > W2K)
> > 
> > If  test.file is on a local directory
> > 
> > $ perl slowchm.pl
> > 113.4 chmods per sec
> > $ perl fastchm.pl
> > 2923.6 chmods per sec
> > 
> > if test.file is on a mounted directory
> > 
> > $ perl slowchm.pl
> > 51.9 chmods per sec
> > $ perl fastchm.pl
> > 143 chmods per sec
> > 
> > Could anyone explain the performance ratio for both scripts ???
> > 
> > btw, on a "slow" linux p3-866
> > test.file being on a remote directory
> > $ perl slowchm.pl
> > 187.8 chmods per sec
> > $ perl fastchm.pl
> > 3096.8 chmods per sec
> > 
> > test.file being on a local directory
> > $ perl slowchm.pl
> > 181.7 chmods per sec
> > $ perl fastchm.pl
> > 263232.5 chmods per sec   (arf!)
> > 
> > I got a wider gap for small c program opening and closing about 650 
> > files It takes 0.750 s for local files and about 2 s for 
> distant files 
> > On the linux machine, it's just 0.1 s for distant files...
> > 
> > Is the _open() routine guilty ?
> > Is it linked to the unix AND dos path compatibility ?
> > Anyone as a hint to speed this up ?
> > 
> > 
> > --
> > 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/
> 
> --
> 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/
> 
> 

--
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/