--------------------------
The API was redesigned to support running multiple benchmarks with a single
Runner object.
Enhancements:
* ``--loops`` command line argument now accepts ``x^y`` syntax. For example,
``--loops=2^8`` uses ``256`` iterations
* Calibratation is now done in a dedicated process to avoid side effect on the
first process. This change is important if Python has a JIT compiler, to
get more reliable timings on the first worker computing samples.
Incompatible API changes:
* Benchmark constructor now requires a non-empty sequence of Run objects.
* A benchmark must now have a name: all runs must have a name metadata.
* Remove *name* argument from Runner constructor and add *name* parameter
to :func:`Benchmark.bench_func` and :func:`Benchmark.bench_sample_func`
* ``perf.text_runner.TextRunner`` becomes simply ``perf.Runner``.
Remove the ``perf.text_runner`` module.
* ``TextRunner.program_args`` attribute becomes a parameter of :class:`Runner`
constructor. *program_args* must no more start with ``sys.executable`` which
is automatically added, since the executable can now be overridden by the
``--python`` command line option.
* The ``TextRunner.prepare_subprocess_args`` attribute becomes a new
*add_cmdline_args* parameter of :class:`Runner` constructor which is called
with different arguments than the old *prepare_subprocess_args* callback.
Changes:
* Add *show_name* optional parameter to :class:`Runner`. The runner now
displays the benchmark name by default.
* The calibration is now done after starting tracing memory
* Run constructor now accepts an empty list of samples. Moreover, it also
accepts ``int`` and ``long`` number types for warmup sample values, not only
``float``.
* Add a new private ``--worker-task`` command line option to only execute
a specific benchmark function by its identifier.
* Runner now supports calling more than one benchmark function using
``--worker-task`` internally.
* Benchmark.dump() and BenchmarkSuite.dump() now fails by default if the
file already exists. Set the new *replace* parameter to true to allow to
replace an existing file.