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 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit 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/