A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2017-April/147759.html below:

[Python-Dev] CPython benchmark status, April 2017

[Python-Dev] CPython benchmark status, April 2017Victor Stinner victor.stinner at gmail.com
Fri Apr 7 12:27:50 EDT 2017
Hi,

I'm still working on analyzing past optimizations to guide future
optimizations. I succeeded to identify multiple significant
optimizations over the last 3 years. At least for me, some were
unexpected like "Use the test suite for profile data" which made
pickle 1.28x faster and pidigts 1.16x faster.

Here is a report of my benchmark work of last weeks.


I succeeded to compute benchmarks on CPython master on the period
April, 2014-April,2017: we now have have a timeline over 3 years of
CPython performance!

   https://speed.python.org/timeline/

I started to take notes on significant performance changes (speedup
and slowdown) of this timeline:

   http://pyperformance.readthedocs.io/cpython_results_2017.html

To identify the change which introduced a significant performance
change, I wrote a Python script running a Git bisection: compile
CPython, run benchmark, repeat.

   https://github.com/haypo/misc/blob/master/misc/bisect_cpython_perf.py

It uses a configuration file which looks like:
---
[config]
work_dir = ~/prog/bench_python/bisect-pickle
src_dir = ~/prog/bench_python/master

old_commit = 133138a284be1985ebd9ec9014f1306b9a42
new_commit = 10427f44852b6e872034061421a8890902b8f
benchmark = ~/prog/bench_python/performance/performance/benchmarks/bm_pickle.py
pickle

benchmark_opts = --inherit-environ=PYTHONPATH -p5 -v
configure_args =
---

I succeeded to identify many significant optimizations, examples:

* PyMem_Malloc() now uses the fast pymalloc allocator
* Add a C implementation of collections.OrderedDict
* Use the test suite for profile data
* Speedup method calls 1.2x
* Added C implementation of functools.lru_cache()
* Optimized ElementTree.iterparse(); it is now 2x faster

perf, performance, server configuration, etc. evolve quicker than
expected, so I created a Git project to keep a copy of JSON files:

   https://github.com/haypo/performance_results

I lost data of my first milestone (november-december 2016), but
you have data from the second (december 2016-february 2017) and third
(march 2016-today) milestones.

Victor
More information about the Python-Dev mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4