[Melbourne-pm] Perl much slower on freebsd than solaris

Toby Corkindale toby.corkindale at strategicdata.com.au
Wed Apr 25 22:26:59 PDT 2012


Hi Tim,
it would be very interesting to see the results obtained when compiling 
Perl yourself on each machine, with the same version of Perl and same 
compile-time options.

If you're interested, check out perlbrew, which automates that process 
for you.

Toby

On 26/04/12 15:17, Tim Hogard wrote:
>
> 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]
>
> _______________________________________________
> Melbourne-pm mailing list
> Melbourne-pm at pm.org
> http://mail.pm.org/mailman/listinfo/melbourne-pm


-- 
.signature


More information about the Melbourne-pm mailing list