delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2002/07/16/14:43:06

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
From: "Bernard A Badger" <bab AT vx DOT com>
To: <cygwin AT cygwin DOT com>
Subject: RE: Cygwin is SLOW
Date: Tue, 16 Jul 2002 14:45:05 -0400
Message-ID: <INEKLKBFCDBPKMKAJLMDMEABCGAA.bab@vx.com>
MIME-Version: 1.0
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000
In-Reply-To: <023601c22ce2$48b5cbe0$a50aa8c0@pcse5>
Importance: Normal

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

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019