[Speed] performance 0.5.5 and perf 1.3 released

Victor Stinner victor.stinner at gmail.com
Mon May 29 12:49:37 EDT 2017


Hi,

I just released performance 0.5.5 and perf 1.3. The main change is the
removal of microbenchmarks from performance, you can now find them in
a different project:
https://github.com/haypo/pymicrobench

The perf warmup calibration is still highly unstable, and so PyPy
still don't use performance yet. I began to analyze warmups manually
but I was too lazy to finish the work:
http://haypo-notes.readthedocs.io/pypy_warmups.html

=== performance 0.5.5 ===

* On the 2.x branch on CPython, ``compile`` now pass ``--enable-unicode=ucs4``
  to the ``configure`` script on all platforms, except on Windows which uses
  UTF-16 because of its 16-bit wchar_t.
* The ``float`` benchmark now uses ``__slots__`` on the ``Point`` class.
* Remove the following microbenchmarks. They have been moved to the
  `pymicrobench <https://github.com/haypo/pymicrobench>`_ project because
  they are too short, not representative of real applications and are too
  unstable.

  - ``pybench`` microbenchmark suite
  - ``call_simple``
  - ``call_method``
  - ``call_method_unknown``
  - ``call_method_slots``
  - ``logging_silent``: values are faster than 1 ns on PyPy with 2^27 loops!
    (and around 0.7 us on CPython)

* Update requirements

  - Django: 1.11 => 1.11.1
  - SQLAlchemy: 1.1.9 => 1.1.10
  - certifi: 2017.1.23 => 2017.4.17
  - perf: 1.2 => 1.3
  - mercurial: 4.1.2 => 4.2
  - tornado: 4.4.3 => 4.5.1


=== perf  1.3 ===

* Add ``get_loops()`` and ``get_inner_loops()`` methods to Run and Benchmark
  classes
* Documentation: add export_csv.py and plot.py examples
* Rewrite warmup calibration for PyPy:

  - Use Q1, Q3 and stdev, rather than mean and checking if the first value
    is an outlier
  - Always use a sample of 10 values, rather than using a sample of a variable
    size starting with 3 values

* Use lazy import for most imports of the largest modules to reduce the
  number of imported module on 'import perf'.
* Fix handling of broken pipe error to prevent logging the error:
  "Exception ignored in: ... BrokenPipeError: ..."
* ``collect_metadata`` gets more metadata on FreeBSD:

  - use ``os.getloadavg()`` if ``/proc/loadavg`` is not available (ex: FreeBSD)
  - use ``psutil.boot_time()`` if ``/proc/stat`` is not available (ex: FreeBSD)
    to get ``boot_time`` and ``uptime`` metadata

* The Runner constructor now raises an exception if more than one instance is
  created.

Victor


More information about the Speed mailing list