benchmark-perlformance - Frontend for Benchmark::Perl::Formance
Usage:
$ benchmark-perlformance $ benchmark-perlformance --plugins=SpamAssassin,Fib,Rx $ benchmark-perlformance --plugins=SpamAssassin,Fib,Rx -q $ benchmark-perlformance --plugins=SpamAssassin,Fib,Rx -v $ benchmark-perlformance --plugins=SpamAssassin,Fib,Rx -vv -ccccc
To provide configuration, general and plugin specific, you can use the -D option to define key/value pairs:
-D
$ benchmark-perlformance -DShootout_fasta_n=5500 [...]
Plugins usually follow the convention that the options are prefixed with the plugin name, like in the example it means the config value n used by the plugin Shootout::fasta.
n
Shootout::fasta
This is the frontend commandline tool for starting the performance benchmark runs.
After running it prints out the results which you can take to compare them to runs with other Perl versions, other architectures, different compile time configuration or on different machines.
There are some options available.
prints out a help page.
Use only a particular list of sub benchmarks. The comma-separated list refers to Benchmark::Perl::Formance::Plugin::* respectively.
Benchmark::Perl::Formance::Plugin::*
If you provide --plugins=ALL then all known plugins will be tried.
--plugins=ALL
If you do not provide the --plugins option then a default list of "mostly harmless" plugins is used which should work with the same dependencies of Benchmark::Perl::Formance itself (currently: DPath, Fib, FibOO, Mem, Prime, Rx, Shootout::{fasta, regexdna, binarytrees, revcomp, nbody, spectralnorm}).
--plugins
DPath
Fib
FibOO
Mem
Prime
Rx
Shootout::
fasta
regexdna
binarytrees
revcomp
nbody
spectralnorm
This activates a condensed tabular output. Default since v0.10.
This activates JSON formatted output containing meta information.
This activates YAML formatted output containing meta information.
Similar to --outstyle=yaml, except the produced YAML is actually the lightweight variant YAMLish produced by Data::YAML::Writer, which can easily be embedded into TAP.
--outstyle=yaml
Write results into FILE. If FILE can not be opened then it prints to STDOUT.
If this is set then some plugins try to scale down the stress to take less time (with less useful results, of course). Mostly for easier development.
Runs an external utility script (benchmark-perlformance-set-stable-system) which stabilizes the system to get less deviation on multiple runs.
benchmark-perlformance-set-stable-system
The system is stabilized using:
Disable address space randomization (ASLR)
See https://wiki.ubuntu.com/Security/Features
Set maximum frequency of all cpus to minimum frequency
Therefore the system can't scale down further unexpectedly, e.g. when it gets hot.
Drop caches
See http://linux-mm.org/Drop_Caches.
Classical disk sync
Flush file system buffers, see man 1 sync.
man 1 sync
The external utility script is called via sudo - please configure your sudo in advance to suit your needs, e.g. to not ask for password. An alternative approach is to run benchmark-perlformance-set-stable-system lo once when your system boots, like from /etc/init.d/ (and run your cpu slow all the time, obviously).
sudo
benchmark-perlformance-set-stable-system lo
/etc/init.d/
Be careful: maybe the cpu is not restored perfectly after a run, e.g., due to crashes during the benchmarking, or the values are not the very same. This could make your next results without --stabilize-cpu inconclusive. Reboot your system to ensure a clean state or use --stabilize-cpu all the time.
--stabilize-cpu
Print Benchmark::Perl::Formance version. In conjunction with -v it prints out all available plugins with version.
-v
Increases the verbosity level during the run of the benchmarks. Default is only print the result (and maybe some output from external tools).
To increase the number of keys from your Perl Config that are included in the result use one or more -c options.
Please note that only one single -v is not enough to see errors that occur when trying to load a plugin. They are only marked as "skipped". Use -vv to see the error message; -vvv for progress information; -vvvv or more should be used for debugging info.
Be quiet; do not output results.
Gives you the most basic information like Perl version, operating system name and architecture, i.e., perlpath, version, archname, archname64, osvers.
perlpath
version
archname
archname64
osvers
Adds gccversion, gnulibc_version, usemymalloc, config_args, optimize.
gccversion
gnulibc_version
usemymalloc
config_args
optimize
Adds ccflags, ccname, cccdlflags, ccdlflags, cppflags, nm_so_opt.
ccflags
ccname
cccdlflags
ccdlflags
cppflags
nm_so_opt
Adds about 40 more keys from Perl's %Config hash - everything that sounds like it could either influence performance between different hardware, configurations, and compilers, or interesting meta information around that.
Includes all info from Perl's %Config hash.
Includes platform info via Devel::Platform::Info
(Users who want to greet the 80s combine it this way: -cccp. :-))
-cccp
When given together with --outstyle=yamlish this will prepend the YAMLish with a TAP line
--outstyle=yamlish
ok some description
This makes it easier for wrappers to embed the output into TAP which otherwise need to differentiate between output (verbose and other) and the YAMLish.
This indents the output of --outstyle=yamlish by some spaces (2 in the example). Together with --tapdescription it makes an TAP v13 style structured diagnostics block which can, for instance, be evaluated using TAP::DOM.
--tapdescription
By setting this you can activate the forks drop-in replacement for threads.
forks
See Benchmark::Perl::Formance::Plugin::Threads.
With this you can configure some plugins by defining key/value pairs.
See Benchmark::Perl::Formance::Plugin::SpamAssassin. Contains the path to the "sa-learn" executable.
See Benchmark::Perl::Formance::Plugin::Threads. Use this many count of threads. Default is 16.
Please read the documentation for the used plugins, as they might accept special configuration, usually via -Dkey=value options.
-Dkey=value
Run Bayes learning tools from SpamAssassin.
Stress using Perl6/Perl5 tools around STD.pm
Use DPath to stress lookup, traversing and copying data structures.
Regular expressions, basic functions and pathological regex stressing.
Compare differnet regex engines (pluggable since Perl 5.10).
Fibonnacci numbers to stress recursion and function calls.
Fibonnacci numbers to stress recursion and method calls, with plain Perl OO.
Fibonnacci numbers to stress recursion and method calls, with Moose.
Fibonnacci numbers to stress recursion and method calls, with Mouse.
Fibonnacci numbers to stress recursion and method calls, with MooseX::Declare.
Thread handling.
Runs some Perl benchmarks from the Language Shootout on alioth.debian.org.
Runs tools from Perl6 STD world.
Steffen Schwigon <ss5@renormalist.net>
This software is copyright (c) 2015 by Steffen Schwigon.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install Benchmark::Perl::Formance, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Benchmark::Perl::Formance
CPAN shell
perl -MCPAN -e shell install Benchmark::Perl::Formance
For more information on module installation, please visit the detailed CPAN module installation guide.