Skip to content

Commit f90e0d2

Browse files
bpo-37759: Show output from var_access_benchmark (GH-17040) (GH-17041)
(cherry picked from commit 1cdadf4) Co-authored-by: Raymond Hettinger <rhettinger@users.noreply.github.com>
1 parent 87af518 commit f90e0d2

File tree

1 file changed

+52
-3
lines changed

1 file changed

+52
-3
lines changed

Doc/whatsnew/3.8.rst

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2154,6 +2154,55 @@ CPython bytecode changes
21542154
Demos and Tools
21552155
---------------
21562156

2157-
* Added a benchmark script for timing various ways to access variables:
2158-
``Tools/scripts/var_access_benchmark.py``.
2159-
(Contributed by Raymond Hettinger in :issue:`35884`.)
2157+
Added a benchmark script for timing various ways to access variables:
2158+
``Tools/scripts/var_access_benchmark.py``.
2159+
(Contributed by Raymond Hettinger in :issue:`35884`.)
2160+
2161+
Here's a summary of performance improvements since Python 3.3:
2162+
2163+
.. code-block:: none
2164+
2165+
Python version 3.3 3.4 3.5 3.6 3.7 3.8
2166+
-------------- --- --- --- --- --- ---
2167+
2168+
Variable and attribute read access:
2169+
read_local 4.0 7.1 7.1 5.4 5.1 3.9
2170+
read_nonlocal 5.3 7.1 8.1 5.8 5.4 4.4
2171+
read_global 13.3 15.5 19.0 14.3 13.6 7.6
2172+
read_builtin 20.0 21.1 21.6 18.5 19.0 7.5
2173+
read_classvar_from_class 20.5 25.6 26.5 20.7 19.5 18.4
2174+
read_classvar_from_instance 18.5 22.8 23.5 18.8 17.1 16.4
2175+
read_instancevar 26.8 32.4 33.1 28.0 26.3 25.4
2176+
read_instancevar_slots 23.7 27.8 31.3 20.8 20.8 20.2
2177+
read_namedtuple 68.5 73.8 57.5 45.0 46.8 18.4
2178+
read_boundmethod 29.8 37.6 37.9 29.6 26.9 27.7
2179+
2180+
Variable and attribute write access:
2181+
write_local 4.6 8.7 9.3 5.5 5.3 4.3
2182+
write_nonlocal 7.3 10.5 11.1 5.6 5.5 4.7
2183+
write_global 15.9 19.7 21.2 18.0 18.0 15.8
2184+
write_classvar 81.9 92.9 96.0 104.6 102.1 39.2
2185+
write_instancevar 36.4 44.6 45.8 40.0 38.9 35.5
2186+
write_instancevar_slots 28.7 35.6 36.1 27.3 26.6 25.7
2187+
2188+
Data structure read access:
2189+
read_list 19.2 24.2 24.5 20.8 20.8 19.0
2190+
read_deque 19.9 24.7 25.5 20.2 20.6 19.8
2191+
read_dict 19.7 24.3 25.7 22.3 23.0 21.0
2192+
read_strdict 17.9 22.6 24.3 19.5 21.2 18.9
2193+
2194+
Data structure write access:
2195+
write_list 21.2 27.1 28.5 22.5 21.6 20.0
2196+
write_deque 23.8 28.7 30.1 22.7 21.8 23.5
2197+
write_dict 25.9 31.4 33.3 29.3 29.2 24.7
2198+
write_strdict 22.9 28.4 29.9 27.5 25.2 23.1
2199+
2200+
Stack (or queue) operations:
2201+
list_append_pop 144.2 93.4 112.7 75.4 74.2 50.8
2202+
deque_append_pop 30.4 43.5 57.0 49.4 49.2 42.5
2203+
deque_append_popleft 30.8 43.7 57.3 49.7 49.7 42.8
2204+
2205+
Timing loop:
2206+
loop_overhead 0.3 0.5 0.6 0.4 0.3 0.3
2207+
2208+
(Measured from the macOS 64-bit builds found at python.org)

0 commit comments

Comments
 (0)