Metadata-Version: 1.1
Name: perf
Version: 1.5.1
Summary: Python module to generate and modify perf
Home-page: https://github.com/vstinner/perf
Author: Victor Stinner
Author-email: victor.stinner@gmail.com
License: MIT license
Description-Content-Type: UNKNOWN
Description: ****
        perf
        ****
        
        .. image:: https://img.shields.io/pypi/v/perf.svg
           :alt: Latest release on the Python Cheeseshop (PyPI)
           :target: https://pypi.python.org/pypi/perf
        
        .. image:: https://travis-ci.org/vstinner/perf.svg?branch=master
           :alt: Build status of perf on Travis CI
           :target: https://travis-ci.org/vstinner/perf
        
        The Python ``perf`` module is a toolkit to write, run and analyze benchmarks.
        
        Features
        ========
        
        * Simple API to run reliable benchmarks
        * Automatically calibrate a benchmark for a time budget.
        * Spawn multiple worker processes.
        * Compute the mean and standard deviation.
        * Detect if a benchmark result seems unstable.
        * JSON format to store benchmark results.
        * Support multiple units: seconds, bytes and integer.
        
        
        Usage
        =====
        
        To `run a benchmark`_ use the ``perf timeit`` command (result written into
        ``bench.json``)::
        
            $ python3 -m perf timeit '[1,2]*1000' -o bench.json
            .....................
            Mean +- std dev: 4.22 us +- 0.08 us
        
        Or write a benchmark script ``bench.py``:
        
        .. code:: python
        
            #!/usr/bin/env python3
            import perf
        
            runner = perf.Runner()
            runner.timeit("sorted(list(range(1000)), key=lambda x: x)",
                          stmt="sorted(s, key=f)",
                          setup="f = lambda x: x; s = list(range(1000))")
        
        Run the script using (result written into ``bench.json``)::
        
            $ python3 bench.py -o bench.json
        
        To `analyze benchmark results`_ use the ``perf stats`` command::
        
            $ python3 -m perf stats bench.json
            Total duration: 29.2 sec
            Start date: 2016-10-21 03:14:19
            End date: 2016-10-21 03:14:53
            Raw value minimum: 177 ms
            Raw value maximum: 183 ms
        
            Number of calibration run: 1
            Number of run with values: 40
            Total number of run: 41
        
            Number of warmup per run: 1
            Number of value per run: 3
            Loop iterations per value: 8
            Total number of values: 120
        
            Minimum:         22.1 ms
            Median +- MAD:   22.5 ms +- 0.1 ms
            Mean +- std dev: 22.5 ms +- 0.2 ms
            Maximum:         22.9 ms
        
              0th percentile: 22.1 ms (-2% of the mean) -- minimum
              5th percentile: 22.3 ms (-1% of the mean)
             25th percentile: 22.4 ms (-1% of the mean) -- Q1
             50th percentile: 22.5 ms (-0% of the mean) -- median
             75th percentile: 22.7 ms (+1% of the mean) -- Q3
             95th percentile: 22.9 ms (+2% of the mean)
            100th percentile: 22.9 ms (+2% of the mean) -- maximum
        
            Number of outlier (out of 22.0 ms..23.0 ms): 0
        
        There's also:
        
        * ``perf compare_to`` command tests if a difference is
          significant. It supports comparison between multiple benchmark suites (made
          of multiple benchmarks)
          ::
        
            $ python3 -m perf compare_to py2.json py3.json --table
            +-----------+---------+------------------------------+
            | Benchmark | py2     | py3                          |
            +===========+=========+==============================+
            | timeit    | 4.70 us | 4.22 us: 1.11x faster (-10%) |
            +-----------+---------+------------------------------+
        
        * ``perf system tune`` command to tune your system to run stable benchmarks.
        * Automatically collect metadata on the computer and the benchmark:
          use the ``perf metadata`` command to display them, or the
          ``perf collect_metadata`` command to manually collect them.
        * ``--track-memory`` and ``--tracemalloc`` options to track
          the memory usage of a benchmark.
        
        
        Quick Links
        ===========
        
        * `perf documentation
          <https://perf.readthedocs.io/>`_
        * `perf project homepage at GitHub
          <https://github.com/vstinner/perf>`_ (code, bugs)
        * `Download latest perf release at the Python Cheeseshop (PyPI)
          <https://pypi.python.org/pypi/perf>`_
        
        Command to install perf on Python 3::
        
            python3 -m pip install perf
        
        perf supports Python 2.7 and Python 3. It is distributed under the MIT license.
        
        .. _run a benchmark: https://perf.readthedocs.io/en/latest/run_benchmark.html
        .. _analyze benchmark results: https://perf.readthedocs.io/en/latest/analyze.html
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Software Development :: Libraries :: Python Modules
