[Melbourne-pm] Perl much slower on freebsd than solaris
Tim Hogard
thogard at abnormal.com
Wed Apr 25 22:17:02 PDT 2012
Hi,
I'm trying to moving my sparc systems from using solaris 9 over to
freebsd 9.0 but I'm finding perl to be very slow.
Freebsd 9.0 seemed slow so I fired up this:
#!/usr/bin/perl
foreach $i (1..1000000) {
$i{$i}=$i;
}
It takes 4 second on the solaris machine and 24+ seconds on the
freebsd machine. I backed up to freebsd 8.3 and perl 5.10.1 and
had the same results. My next step is to drop back to the exact
versions but I don't think the minor version differences are the
main problem.
Both systems have the same clock speed and model of cpu but the
free bsd system is slightly slower.
main() { int i; double a; for(i=0;i<1000000000;i++) { a=i*a; } }
Takes 12 sec on the sol9 and 16 sec on freebsd. 33% slower is ok,
600% is not.
Both systems have a gig of unused memory and haven't touched swap.
The sol9 server is doing other things like email, squid, web serving
stuff too. The freebsds system is not doing anything other than
these tests. The sol9 system does have 2 cpus and the freebsd one
has one but tests of running the programs 4 times in parallel gives
the correct results of a 2x increase in time for the 2 cpu system
and a 4x increase for the single cpu.
Does anyone have any hints on where to look next? I was thinking
the sol9 was 32 bit so it was moving less data around but that
should only cover a 2x speed decrease at the worst. Version details
are below.
Thanks,
-tim
---------------------------
Version info
>From the sol 9:
bash-2.05$ perl -V
Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
Platform:
osname=solaris, osvers=2.9, archname=sun4-solaris
uname='sunos v210-2 5.9 generic_122300-15 sun4u sparc sunw,netra-210 '
config_args='-Dcc=gcc'
hint=recommended, useposix=true, d_sigaction=define
useithreads=undef, usemultiplicity=undef
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=undef, use64bitall=undef, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='gcc', ccflags ='-fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
optimize='-O',
cppflags='-fno-strict-aliasing -pipe -I/usr/local/include'
ccversion='', gccversion='4.2.3', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='gcc', ldflags =' -L/usr/local/lib '
libpth=/usr/local/lib /usr/lib /usr/ccs/lib
libs=-lsocket -lnsl -ldb -ldl -lm -lc
perllibs=-lsocket -lnsl -ldl -lm -lc
libc=/lib/libc.so, so=so, useshrplib=false, libperl=libperl.a
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' '
cccdlflags='-fPIC', lddlflags='-G -L/usr/local/lib'
Characteristics of this binary (from libperl):
Compile-time options: PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP
USE_LARGE_FILES USE_PERLIO
Built under solaris
Compiled at Aug 22 2008 01:59:34
@INC:
/usr/local/lib/perl5/5.10.0/sun4-solaris
/usr/local/lib/perl5/5.10.0
/usr/local/lib/perl5/site_perl/5.10.0/sun4-solaris
/usr/local/lib/perl5/site_perl/5.10.0
>From the freebsd: (built from source using the Policy from the other machine. Building from ports was just as slow)
[thogard at v210-2 ~/src/perl-5.10.1]$ perl -V
Summary of my perl5 (revision 5 version 10 subversion 1) configuration:
Platform:
osname=freebsd, osvers=8.3-release, archname=sparc64-freebsd
uname='freebsd v210-2.umd.com.au 8.3-release freebsd 8.3-release #0: tue apr 10 03:28:23 utc 2012 root at araz.cse.buffalo.edu:usrobjusrsrcsysgeneric sparc64 '
config_args=''
hint=recommended, useposix=true, d_sigaction=define
useithreads=undef, usemultiplicity=undef
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=define, use64bitall=define, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
ude',
optimize='-O',
cppflags='-DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'
ccversion='', gccversion='4.2.2 20070831 prerelease [FreeBSD]', gccosandvers=''
intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=87654321
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='cc', ldflags ='-Wl,-E -fstack-protector -L/usr/local/lib'
libpth=/usr/lib /usr/local/lib
libs=-lm -lcrypt -lutil -lc
perllibs=-lm -lcrypt -lutil -lc
libc=, so=so, useshrplib=false, libperl=libperl.a
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' '
cccdlflags='-DPIC -fPIC', lddlflags='-shared -L/usr/local/lib -fstack-protector'
Characteristics of this binary (from libperl):
Compile-time options: PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP USE_64_BIT_ALL
USE_64_BIT_INT USE_LARGE_FILES USE_PERLIO
Built under freebsd
Compiled at Apr 26 2012 14:38:36
@INC:
/usr/local/lib/perl5/5.10.1/sparc64-freebsd
/usr/local/lib/perl5/5.10.1
/usr/local/lib/perl5/site_perl/5.10.1/sparc64-freebsd
/usr/local/lib/perl5/site_perl/5.10.1
The sol 9 box uses gcc:
bash-2.05$ gcc -v
Using built-in specs.
Target: sparc-sun-solaris2.9
Configured with: ./configure --enable-languages=c,c++
Thread model: posix
gcc version 4.3.2 (GCC)
And the freebsd box uses:
Using built-in specs.
Target: sparc64-undermydesk-freebsd
Configured with: FreeBSD/sparc64 system compiler
Thread model: posix
gcc version 4.2.2 20070831 prerelease [FreeBSD]
More information about the Melbourne-pm
mailing list