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: 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: cygwin-owner@cygwin.com [mailto:cygwin-owner@cygwin.com]On Behalf
> Of BiDuS
> Sent: Tuesday, July 16, 2002 12:03 PM
> To: cygwin@cygwin.com
> 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/


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