This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
bench.pl: add 'pre' and 'post' benchmark fields
authorDavid Mitchell <davem@iabyn.com>
Sat, 21 Oct 2017 22:53:03 +0000 (23:53 +0100)
committerDavid Mitchell <davem@iabyn.com>
Mon, 23 Oct 2017 10:52:03 +0000 (11:52 +0100)
commit485eb0094b3454fae184f55b907d88350ec6ed02
tree1617fecb093e91d014e9634c8ac2197f29ceaa7c
parentb0ecc2e110d96205914c55571e03f5ddbcdf78e3
bench.pl: add 'pre' and 'post' benchmark fields

These allow actions to be performed each time round the loop, just before
and after the benchmarked code, but without contributing to the timings.

For example to benchmark appending to a string, you need to reset the
string to a known state before each iteration, otherwise the string gets
bigger and bigger with each iteration:

    code => '$s = ""; $s .= "foo"',

but now you're measuring both the concat and an assign. To measure just
the concat, you can now do:

    pre  => '$s = ""',
    code => '$s .= "foo"',

Note the contrast with 'setup', which is only executed once, outside the
loop.
Porting/bench.pl
t/perf/benchmarks