400.perlbench
Larry Wall, et. al.
Programming language
400.perlbench is a cut-down version of Perl v5.8.7, the popular scripting language. SPEC's version of Perl has had most of OS-specific features removed. In addition to the core Perl interpreter, several third-party modules are used:
Sources for all of the freely-available components used in 400.perlbench can be found in $SPEC/redistributable_sources/original/400.perlbench/ on your SPEC CPU2006 DVD.
The reference workload for 400.perlbench consists of three scripts:
The training workload is similar, but not identical, to the reference workload from CPU2000. The test workload consists of the non-system- specific parts of the actual Perl 5.8.7 test harness.
In the case of the mail-based benchmarks, a line with salient characteristics (number of header lines, number of body lines, etc) is output for each message generated. During processing, MD5 hashes of the contents of output "files" (in memory) are computed and output. For SpamAssassin, the message's score and the rules that it triggered are also output.
ANSI C
There are some known aliasing issues. The internal data structures that represent Perl's variables are accessed in such as a way as to violate ANSI aliasing rules. Compilation with optimizations that rely on strict compliance to ANSI C aliasing rules will most likely produce binaries that will not validate.
New with CPU2006 V1.1, Windows compilers that do not automatically define _MSC_VER may define SPEC_CPU_NEED_POSIX_IDS as a portability flag to enable compilation.
In V1.0 of SPEC CPU2006, compiling with gcc (or gcc compatible compilers) on newer versions of Solaris yielded the message
perlio.c:2872: error: 'FILE' has no member named '_file'
This problem has been fixed in V1.1 by removing outdated code.
Under V1.0 of SPEC CPU2006, if you compiled 400.perlbench with gcc on ia64/Linux, the benchmark would sometimes abort abnormally with an unaligned access bus error, due to a jmpbuf on some Linux systems whose alignment violated the ABI. New with CPU2006 V1.1, you can now optionally set SPEC_CPU_IA64_GCC_ALIGNMENT to force jmpenv (in scope.h) to be better aligned.
Last updated: $Date: 2008-04-12 08:31:17 -0400 (Sat, 12 Apr 2008) $