Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
Discussion Groups
General
GeneralPortable MacsHardwareNetworking
Applications
Mac ApplicationsEudoraFirefox / MozillaInternet ExplorerOutlook ExpressMS OfficeEntourageExcelPowerPointWordVirtual PCMedia PlayerOther MS Products
Programming
Mac ProgrammingCodeWarriorPerl
Country Specific
Australian Mac GroupUK Mac Group

Mac Forum / Programming / Perl / February 2007



Tip: Looking for answers? Try searching our database.

perl code on mac slow

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Brett W Grant - 27 Feb 2007 16:24 GMT
I have a server where the computer that I log into is a Mac Xserver 2.2
GHz Dual Processor machine with 2G ram.   I wrote some perl code to figure
out what is going on with Gridware.  Essentially it compares what gridware
thinks that it is doing with the files that are in the specific directory.
I am kind of new to perl, so I may not have written the best code, but it
works ok for me.  Anyway, I developed the code on this mac machine.

When I run the code to check on 625 files in one directory it took about a
minute.  I checked and the machine is 90% idle.

Now when I run this identical code on my Xeon 1.8 GHz machine with 4 G ram
where it checks 1125 files in one directory (unfortunately I don't have
the exact same data on both systems)  it takes just 10 seconds.  This is
on a slower machine with more users logged in!

The mac box has perl ver 5.8.6.  The xeons have perl 5.8.5.

Is there something I can check on to see what is going on?  Its almost
like the mac doesn't use all of its resources when it runs the code.

I tried doing a Google search on slow perl, but really came up with very
few relative hits.

Thanks,
Brett Grant
Sherm Pendley - 27 Feb 2007 16:45 GMT
> I have a server where the computer that I log into is a Mac Xserver  
> 2.2
[quoted text clipped - 24 lines]
> Is there something I can check on to see what is going on?  Its almost
> like the mac doesn't use all of its resources when it runs the code.

Mac OS X doesn't throttle processes that I know of, so if your CPU is  
at 90% idle, your script is probably waiting on either disk or  
network IO. You could try profiling your script with Devel::DProf to  
get a breakdown on where the time is being spent in your script.

Another very simple benchmark is to run your script with "time  
myscript.pl". That will report the real (i.e. wall clock) time spent,  
the user (i.e. your script) time, and the sys (i.e. OS) time. Time  
spent waiting on disk or network is reported as sys time here.

sherm--

Web Hosting by West Virginians, for West Virginians: http://wv-www.net
Cocoa programming in Perl: http://camelbones.sourceforge.net
Brett W Grant - 27 Feb 2007 17:10 GMT
I was using time script.plx to get the times.  On the Mac

39.916u 14.315s 0:55.51 97.6% 0+0k 0+59io 0pf+0w

on the xeon

5.918u 1.361s 0:16.8 43.2% 0+0k 0+0io 0pf+0w

I'll look into the Dprof module, I am not sure that it is installed, well
I know that it is not on the xeons.   I am not sure what the 0+59io means.
Also, when I say 90% idle, that means the moment before I execute the
job.

Thanks for the help,
Brett Grant

Sherm Pendley <sherm@dot-app.org>
02/27/2007 09:45 AM

To
Brett_W_Grant@raytheon.com
cc
macosx@perl.org
Subject
Re: perl code on mac slow

> I have a server where the computer that I log into is a Mac Xserver
> 2.2
[quoted text clipped - 24 lines]
> Is there something I can check on to see what is going on?  Its almost
> like the mac doesn't use all of its resources when it runs the code.

Mac OS X doesn't throttle processes that I know of, so if your CPU is
at 90% idle, your script is probably waiting on either disk or
network IO. You could try profiling your script with Devel::DProf to
get a breakdown on where the time is being spent in your script.

Another very simple benchmark is to run your script with "time
myscript.pl". That will report the real (i.e. wall clock) time spent,
the user (i.e. your script) time, and the sys (i.e. OS) time. Time
spent waiting on disk or network is reported as sys time here.

sherm--

Web Hosting by West Virginians, for West Virginians: http://wv-www.net
Cocoa programming in Perl: http://camelbones.sourceforge.net
Daniel T. Staal - 27 Feb 2007 17:21 GMT
> I was using time script.plx to get the times.  On the Mac
>
[quoted text clipped - 8 lines]
> means. Also, when I say 90% idle, that means the moment before I execute
> the job.

I think that 0+59io is output operations.  Which could well be the speed
difference.

Any particular reason why this script might cause output on the Mac but
not the others?

Daniel T. Staal

---------------------------------------------------------------
This email copyright the author.  Unless otherwise noted, you
are expressly allowed to retransmit, quote, or otherwise use
the contents for non-commercial purposes.  This copyright will
expire 5 years after the author's death, or in 30 years,
whichever is longer, unless such a period is in excess of
local copyright law.
---------------------------------------------------------------
Brett W Grant - 27 Feb 2007 18:37 GMT
So I finally got Devel::Profile working.  It would not work unless I set
the PERL_PROFILE_FILENAME to the absolute path of the file that I wanted.
Anyway, it seems that I wasn't really comparing apples to apples.  One of
the things the script has to do is get some data from files that may are
may not be zipped up.  Most of the time is being taken up by calling the
Compress::Zlib routines.  It turns out the directory with 625 entries has
437 zipped files, while the one with 1125 entries only had 127 zipped
files.

Since curiosity killed the cat, I moved the data on the macs to the Xeon
and ran with profile.  So, with identical data and perl scripts I get:

Mac:  87.8 seconds, with 30 seconds in Compress and 30 sec in <other>
Xeon:  64 seonds, with 15 seconds in Compress and 35 sec in <other>

Anyone have any insight into what other is?  I 'm assuming that these are
the system calls to gridware.

Thanks,
Brett Grant

Sherm Pendley <sherm@dot-app.org>
02/27/2007 09:45 AM

To
Brett_W_Grant@raytheon.com
cc
macosx@perl.org
Subject
Re: perl code on mac slow

> I have a server where the computer that I log into is a Mac Xserver
> 2.2
[quoted text clipped - 24 lines]
> Is there something I can check on to see what is going on?  Its almost
> like the mac doesn't use all of its resources when it runs the code.

Mac OS X doesn't throttle processes that I know of, so if your CPU is
at 90% idle, your script is probably waiting on either disk or
network IO. You could try profiling your script with Devel::DProf to
get a breakdown on where the time is being spent in your script.

Another very simple benchmark is to run your script with "time
myscript.pl". That will report the real (i.e. wall clock) time spent,
the user (i.e. your script) time, and the sys (i.e. OS) time. Time
spent waiting on disk or network is reported as sys time here.

sherm--

Web Hosting by West Virginians, for West Virginians: http://wv-www.net
Cocoa programming in Perl: http://camelbones.sourceforge.net
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.