From a0dd36ab72609ff1d2855c05d8c8c55e3f1195ac Mon Sep 17 00:00:00 2001 From: mpage Date: Sun, 20 Oct 2024 08:55:38 +0000 Subject: [PATCH] Benchmarking results for @mpage --- README.md | 5 +- RESULTS.md | 4 + configs.json | 3 +- longitudinal.json | 3 +- longitudinal.svg | 101 +- memory_configs.json | 3 +- memory_configs.svg | 64 +- memory_long.json | 3 +- memory_long.svg | 99 +- .../README.md | 41 + ...885318e3128-3.14.0a1+-8f5e39d-vs-3.12.6.md | 205 + ...85318e3128-3.14.0a1+-8f5e39d-vs-3.12.6.svg | 3086 +++++++++++ ...318e3128-3.14.0a1+-8f5e39d-vs-3.13.0rc2.md | 205 + ...18e3128-3.14.0a1+-8f5e39d-vs-3.13.0rc2.svg | 3066 +++++++++++ ...318e3128-3.14.0a1+-8f5e39d-vs-base-mem.svg | 2281 ++++++++ ...5c885318e3128-3.14.0a1+-8f5e39d-vs-base.md | 204 + ...c885318e3128-3.14.0a1+-8f5e39d-vs-base.svg | 3067 +++++++++++ ...-3.14.0a1+-8f5e39d-pystats-2to3-vs-base.md | 2754 ++++++++++ ...f5e39d-pystats-async_generators-vs-base.md | 4087 ++++++++++++++ ...a1+-8f5e39d-pystats-asyncio_tcp-vs-base.md | 3525 ++++++++++++ ...8f5e39d-pystats-asyncio_tcp_ssl-vs-base.md | 3819 +++++++++++++ ...e39d-pystats-asyncio_websockets-vs-base.md | 3971 ++++++++++++++ ...+-8f5e39d-pystats-bpe_tokeniser-vs-base.md | 3285 +++++++++++ ...3.14.0a1+-8f5e39d-pystats-chaos-vs-base.md | 2580 +++++++++ ...-8f5e39d-pystats-comprehensions-vs-base.md | 2267 ++++++++ ...8f5e39d-pystats-concurrent_imap-vs-base.md | 3577 ++++++++++++ ...0a1+-8f5e39d-pystats-coroutines-vs-base.md | 1707 ++++++ ...4.0a1+-8f5e39d-pystats-coverage-vs-base.md | 3552 ++++++++++++ ...1+-8f5e39d-pystats-crypto_pyaes-vs-base.md | 2628 +++++++++ ...4.0a1+-8f5e39d-pystats-deepcopy-vs-base.md | 2598 +++++++++ ....0a1+-8f5e39d-pystats-deltablue-vs-base.md | 2468 +++++++++ ...8f5e39d-pystats-django_template-vs-base.md | 2852 ++++++++++ ...4.0a1+-8f5e39d-pystats-docutils-vs-base.md | 4242 +++++++++++++++ ...a1+-8f5e39d-pystats-dulwich_log-vs-base.md | 3345 ++++++++++++ ...4.0a1+-8f5e39d-pystats-fannkuch-vs-base.md | 1845 +++++++ ...3.14.0a1+-8f5e39d-pystats-float-vs-base.md | 2079 +++++++ ...0a1+-8f5e39d-pystats-gc_collect-vs-base.md | 1841 +++++++ ...1+-8f5e39d-pystats-gc_traversal-vs-base.md | 1798 +++++++ ...0a1+-8f5e39d-pystats-generators-vs-base.md | 2233 ++++++++ ....14.0a1+-8f5e39d-pystats-genshi-vs-base.md | 3572 ++++++++++++ ...28-3.14.0a1+-8f5e39d-pystats-go-vs-base.md | 2847 ++++++++++ ....14.0a1+-8f5e39d-pystats-hexiom-vs-base.md | 2712 ++++++++++ ...4.0a1+-8f5e39d-pystats-html5lib-vs-base.md | 3709 +++++++++++++ ...-3.14.0a1+-8f5e39d-pystats-json-vs-base.md | 2237 ++++++++ ...0a1+-8f5e39d-pystats-json_dumps-vs-base.md | 2028 +++++++ ...0a1+-8f5e39d-pystats-json_loads-vs-base.md | 1888 +++++++ ...14.0a1+-8f5e39d-pystats-logging-vs-base.md | 2721 ++++++++++ ...-3.14.0a1+-8f5e39d-pystats-mako-vs-base.md | 3097 +++++++++++ ...8-3.14.0a1+-8f5e39d-pystats-mdp-vs-base.md | 3020 +++++++++++ ...-8f5e39d-pystats-meteor_contest-vs-base.md | 2016 +++++++ ...3.14.0a1+-8f5e39d-pystats-nbody-vs-base.md | 1828 +++++++ ...14.0a1+-8f5e39d-pystats-nqueens-vs-base.md | 2225 ++++++++ ...14.0a1+-8f5e39d-pystats-pathlib-vs-base.md | 2956 ++++++++++ ....14.0a1+-8f5e39d-pystats-pickle-vs-base.md | 1455 +++++ ...a1+-8f5e39d-pystats-pickle_dict-vs-base.md | 1443 +++++ ...a1+-8f5e39d-pystats-pickle_list-vs-base.md | 1443 +++++ ...e39d-pystats-pickle_pure_python-vs-base.md | 2731 ++++++++++ ...4.0a1+-8f5e39d-pystats-pidigits-vs-base.md | 1604 ++++++ ....14.0a1+-8f5e39d-pystats-pprint-vs-base.md | 3600 +++++++++++++ ....0a1+-8f5e39d-pystats-pycparser-vs-base.md | 3535 ++++++++++++ ...14.0a1+-8f5e39d-pystats-pyflate-vs-base.md | 2633 +++++++++ ....14.0a1+-8f5e39d-pystats-pylint-vs-base.md | 4457 +++++++++++++++ ...-8f5e39d-pystats-python_startup-vs-base.md | 2754 ++++++++++ ...-pystats-python_startup_no_site-vs-base.md | 2754 ++++++++++ ...4.0a1+-8f5e39d-pystats-raytrace-vs-base.md | 2636 +++++++++ ...+-8f5e39d-pystats-regex_compile-vs-base.md | 3157 +++++++++++ ....0a1+-8f5e39d-pystats-regex_dna-vs-base.md | 2951 ++++++++++ ...1+-8f5e39d-pystats-regex_effbot-vs-base.md | 3008 +++++++++++ ...4.0a1+-8f5e39d-pystats-regex_v8-vs-base.md | 3522 ++++++++++++ ...4.0a1+-8f5e39d-pystats-richards-vs-base.md | 2257 ++++++++ ...-8f5e39d-pystats-richards_super-vs-base.md | 2347 ++++++++ ...14.0a1+-8f5e39d-pystats-scimark-vs-base.md | 2527 +++++++++ ...+-8f5e39d-pystats-spectral_norm-vs-base.md | 1834 +++++++ ...14.0a1+-8f5e39d-pystats-sqlglot-vs-base.md | 3319 ++++++++++++ ...f5e39d-pystats-sqlglot_optimize-vs-base.md | 3484 ++++++++++++ ...+-8f5e39d-pystats-sqlglot_parse-vs-base.md | 3035 +++++++++++ ...5e39d-pystats-sqlglot_transpile-vs-base.md | 3302 ++++++++++++ ...1+-8f5e39d-pystats-sqlite_synth-vs-base.md | 2120 ++++++++ ...3.14.0a1+-8f5e39d-pystats-sympy-vs-base.md | 4226 +++++++++++++++ ...3.14.0a1+-8f5e39d-pystats-telco-vs-base.md | 2223 ++++++++ ....14.0a1+-8f5e39d-pystats-thrift-vs-base.md | 2698 ++++++++++ ...a1+-8f5e39d-pystats-tomli_loads-vs-base.md | 2894 ++++++++++ ...1+-8f5e39d-pystats-tornado_http-vs-base.md | 3993 ++++++++++++++ ...ystats-typing_runtime_protocols-vs-base.md | 3531 ++++++++++++ ...8f5e39d-pystats-unpack_sequence-vs-base.md | 1685 ++++++ ...4.0a1+-8f5e39d-pystats-unpickle-vs-base.md | 1455 +++++ ...+-8f5e39d-pystats-unpickle_list-vs-base.md | 1437 +++++ ...9d-pystats-unpickle_pure_python-vs-base.md | 2874 ++++++++++ ...e3128-3.14.0a1+-8f5e39d-pystats-vs-base.md | 4791 +++++++++++++++++ ....0a1+-8f5e39d-pystats-xml_etree-vs-base.md | 3547 ++++++++++++ .../bm-20241019-3.14.0a1+-8f5e39d/README.md | 35 + ...885318e3128-3.14.0a1+-8f5e39d-vs-3.12.6.md | 202 + ...85318e3128-3.14.0a1+-8f5e39d-vs-3.12.6.svg | 3096 +++++++++++ ...318e3128-3.14.0a1+-8f5e39d-vs-3.13.0rc2.md | 186 + ...18e3128-3.14.0a1+-8f5e39d-vs-3.13.0rc2.svg | 3202 +++++++++++ 95 files changed, 222196 insertions(+), 136 deletions(-) create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/README.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.12.6.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.12.6.svg create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.13.0rc2.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.13.0rc2.svg create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-base-mem.svg create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-base.svg create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-2to3-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-async_generators-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-asyncio_tcp-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-asyncio_tcp_ssl-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-asyncio_websockets-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-bpe_tokeniser-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-chaos-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-comprehensions-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-concurrent_imap-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-coroutines-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-coverage-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-crypto_pyaes-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-deepcopy-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-deltablue-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-django_template-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-docutils-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-dulwich_log-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-fannkuch-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-float-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-gc_collect-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-gc_traversal-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-generators-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-genshi-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-go-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-hexiom-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-html5lib-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-json-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-json_dumps-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-json_loads-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-logging-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-mako-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-mdp-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-meteor_contest-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-nbody-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-nqueens-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pathlib-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pickle-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pickle_dict-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pickle_list-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pickle_pure_python-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pidigits-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pprint-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pycparser-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pyflate-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pylint-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-python_startup-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-python_startup_no_site-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-raytrace-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-regex_compile-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-regex_dna-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-regex_effbot-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-regex_v8-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-richards-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-richards_super-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-scimark-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-spectral_norm-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-sqlglot-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-sqlglot_optimize-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-sqlglot_parse-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-sqlglot_transpile-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-sqlite_synth-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-sympy-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-telco-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-thrift-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-tomli_loads-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-tornado_http-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-typing_runtime_protocols-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-unpack_sequence-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-unpickle-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-unpickle_list-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-unpickle_pure_python-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-xml_etree-vs-base.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d/README.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.12.6.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.12.6.svg create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.13.0rc2.md create mode 100644 results/bm-20241019-3.14.0a1+-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.13.0rc2.svg diff --git a/README.md b/README.md index 2fd8a95b..c897ea4f 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,8 @@ Here are some recent and important revisions. 👉 [Complete list of results](RESULTS.md). +[Most recent pystats on main (8f5e39d)](results/bm-20241019-3.14.0a1%2B-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-pystats.md) + ## linux x86_64 (linux) | date | fork/ref | hash/flags | vs. 3.12.6: | vs. 3.13.0rc2: | vs. base: | | --- | --- | --- | ---: | ---: | ---: | @@ -17,13 +19,14 @@ Here are some recent and important revisions. 👉 [Complete list of results](RE ## linux x86_64 (vultr) | date | fork/ref | hash/flags | vs. 3.12.6: | vs. 3.13.0rc2: | vs. base: | | --- | --- | --- | ---: | ---: | ---: | +| [2024-10-19](results/bm-20241019-3.14.0a1%2B-8f5e39d) | python/8f5e39d5c885318e3128 | 8f5e39d | 1.01x ↓
[📄](results/bm-20241019-3.14.0a1%2B-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-3.12.6.md)[📈](results/bm-20241019-3.14.0a1%2B-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-3.12.6.svg) | 1.02x ↓
[📄](results/bm-20241019-3.14.0a1%2B-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-3.13.0rc2.md)[📈](results/bm-20241019-3.14.0a1%2B-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-3.13.0rc2.svg) | | +| [2024-10-19](results/bm-20241019-3.14.0a1%2B-8f5e39d-NOGIL) | python/8f5e39d5c885318e3128 | 8f5e39d (NOGIL) | 1.55x ↓
[📄](results/bm-20241019-3.14.0a1%2B-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-3.12.6.md)[📈](results/bm-20241019-3.14.0a1%2B-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-3.12.6.svg) | 1.57x ↓
[📄](results/bm-20241019-3.14.0a1%2B-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-3.13.0rc2.md)[📈](results/bm-20241019-3.14.0a1%2B-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-3.13.0rc2.svg) | 1.54x ↓
[📄](results/bm-20241019-3.14.0a1%2B-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-base.md)[📈](results/bm-20241019-3.14.0a1%2B-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-base.svg)[🧠](results/bm-20241019-3.14.0a1%2B-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-base-mem.svg) | | [2024-10-18](results/bm-20241018-3.14.0a1%2B-2e950e3) | python/main | 2e950e3 | 1.01x ↑
[📄](results/bm-20241018-3.14.0a1%2B-2e950e3/bm-20241018-vultr-x86_64-python-main-3.14.0a1%2B-2e950e3-vs-3.12.6.md)[📈](results/bm-20241018-3.14.0a1%2B-2e950e3/bm-20241018-vultr-x86_64-python-main-3.14.0a1%2B-2e950e3-vs-3.12.6.svg) | 1.01x ↓
[📄](results/bm-20241018-3.14.0a1%2B-2e950e3/bm-20241018-vultr-x86_64-python-main-3.14.0a1%2B-2e950e3-vs-3.13.0rc2.md)[📈](results/bm-20241018-3.14.0a1%2B-2e950e3/bm-20241018-vultr-x86_64-python-main-3.14.0a1%2B-2e950e3-vs-3.13.0rc2.svg) | | | [2024-10-18](results/bm-20241018-3.14.0a1%2B-322f14e-NOGIL) | python/322f14eeff9e3b5853ea | 322f14e (NOGIL) | 1.55x ↓
[📄](results/bm-20241018-3.14.0a1%2B-322f14e-NOGIL/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1%2B-322f14e-vs-3.12.6.md)[📈](results/bm-20241018-3.14.0a1%2B-322f14e-NOGIL/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1%2B-322f14e-vs-3.12.6.svg) | 1.57x ↓
[📄](results/bm-20241018-3.14.0a1%2B-322f14e-NOGIL/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1%2B-322f14e-vs-3.13.0rc2.md)[📈](results/bm-20241018-3.14.0a1%2B-322f14e-NOGIL/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1%2B-322f14e-vs-3.13.0rc2.svg) | 1.55x ↓
[📄](results/bm-20241018-3.14.0a1%2B-322f14e-NOGIL/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1%2B-322f14e-vs-base.md)[📈](results/bm-20241018-3.14.0a1%2B-322f14e-NOGIL/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1%2B-322f14e-vs-base.svg)[🧠](results/bm-20241018-3.14.0a1%2B-322f14e-NOGIL/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1%2B-322f14e-vs-base-mem.svg) | | [2024-10-18](results/bm-20241018-3.14.0a1%2B-322f14e) | python/322f14eeff9e3b5853ea | 322f14e | 1.00x ↑
[📄](results/bm-20241018-3.14.0a1%2B-322f14e/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1%2B-322f14e-vs-3.12.6.md)[📈](results/bm-20241018-3.14.0a1%2B-322f14e/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1%2B-322f14e-vs-3.12.6.svg) | 1.01x ↓
[📄](results/bm-20241018-3.14.0a1%2B-322f14e/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1%2B-322f14e-vs-3.13.0rc2.md)[📈](results/bm-20241018-3.14.0a1%2B-322f14e/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1%2B-322f14e-vs-3.13.0rc2.svg) | | | [2024-10-17](results/bm-20241017-3.14.0a1%2B-a0f5c8e) | python/main | a0f5c8e | 1.00x ↑
[📄](results/bm-20241017-3.14.0a1%2B-a0f5c8e/bm-20241017-vultr-x86_64-python-main-3.14.0a1%2B-a0f5c8e-vs-3.12.6.md)[📈](results/bm-20241017-3.14.0a1%2B-a0f5c8e/bm-20241017-vultr-x86_64-python-main-3.14.0a1%2B-a0f5c8e-vs-3.12.6.svg) | 1.01x ↓
[📄](results/bm-20241017-3.14.0a1%2B-a0f5c8e/bm-20241017-vultr-x86_64-python-main-3.14.0a1%2B-a0f5c8e-vs-3.13.0rc2.md)[📈](results/bm-20241017-3.14.0a1%2B-a0f5c8e/bm-20241017-vultr-x86_64-python-main-3.14.0a1%2B-a0f5c8e-vs-3.13.0rc2.svg) | | | [2024-10-16](results/bm-20241016-3.14.0a1%2B-28871ed) | colesbury/gh_125608_dict_watch | 28871ed | 1.00x ↑
[📄](results/bm-20241016-3.14.0a1%2B-28871ed/bm-20241016-vultr-x86_64-colesbury-gh_125608_dict_watch-3.14.0a1%2B-28871ed-vs-3.12.6.md)[📈](results/bm-20241016-3.14.0a1%2B-28871ed/bm-20241016-vultr-x86_64-colesbury-gh_125608_dict_watch-3.14.0a1%2B-28871ed-vs-3.12.6.svg) | 1.01x ↓
[📄](results/bm-20241016-3.14.0a1%2B-28871ed/bm-20241016-vultr-x86_64-colesbury-gh_125608_dict_watch-3.14.0a1%2B-28871ed-vs-3.13.0rc2.md)[📈](results/bm-20241016-3.14.0a1%2B-28871ed/bm-20241016-vultr-x86_64-colesbury-gh_125608_dict_watch-3.14.0a1%2B-28871ed-vs-3.13.0rc2.svg) | 1.00x ↓
[📄](results/bm-20241016-3.14.0a1%2B-28871ed/bm-20241016-vultr-x86_64-colesbury-gh_125608_dict_watch-3.14.0a1%2B-28871ed-vs-base.md)[📈](results/bm-20241016-3.14.0a1%2B-28871ed/bm-20241016-vultr-x86_64-colesbury-gh_125608_dict_watch-3.14.0a1%2B-28871ed-vs-base.svg)[🧠](results/bm-20241016-3.14.0a1%2B-28871ed/bm-20241016-vultr-x86_64-colesbury-gh_125608_dict_watch-3.14.0a1%2B-28871ed-vs-base-mem.svg) | | [2024-10-16](results/bm-20241016-3.14.0a1%2B-3a126a8) | colesbury/gh_125610_STORE_ATTR | 3a126a8 | 1.00x ↑
[📄](results/bm-20241016-3.14.0a1%2B-3a126a8/bm-20241016-vultr-x86_64-colesbury-gh_125610_STORE_ATTR-3.14.0a1%2B-3a126a8-vs-3.12.6.md)[📈](results/bm-20241016-3.14.0a1%2B-3a126a8/bm-20241016-vultr-x86_64-colesbury-gh_125610_STORE_ATTR-3.14.0a1%2B-3a126a8-vs-3.12.6.svg) | 1.01x ↓
[📄](results/bm-20241016-3.14.0a1%2B-3a126a8/bm-20241016-vultr-x86_64-colesbury-gh_125610_STORE_ATTR-3.14.0a1%2B-3a126a8-vs-3.13.0rc2.md)[📈](results/bm-20241016-3.14.0a1%2B-3a126a8/bm-20241016-vultr-x86_64-colesbury-gh_125610_STORE_ATTR-3.14.0a1%2B-3a126a8-vs-3.13.0rc2.svg) | 1.00x ↓
[📄](results/bm-20241016-3.14.0a1%2B-3a126a8/bm-20241016-vultr-x86_64-colesbury-gh_125610_STORE_ATTR-3.14.0a1%2B-3a126a8-vs-base.md)[📈](results/bm-20241016-3.14.0a1%2B-3a126a8/bm-20241016-vultr-x86_64-colesbury-gh_125610_STORE_ATTR-3.14.0a1%2B-3a126a8-vs-base.svg)[🧠](results/bm-20241016-3.14.0a1%2B-3a126a8/bm-20241016-vultr-x86_64-colesbury-gh_125610_STORE_ATTR-3.14.0a1%2B-3a126a8-vs-base-mem.svg) | -| [2024-10-16](results/bm-20241016-3.14.0a1%2B-760872e) | python/760872efecb95017db8e | 760872e | 1.00x ↑
[📄](results/bm-20241016-3.14.0a1%2B-760872e/bm-20241016-vultr-x86_64-python-760872efecb95017db8e-3.14.0a1%2B-760872e-vs-3.12.6.md)[📈](results/bm-20241016-3.14.0a1%2B-760872e/bm-20241016-vultr-x86_64-python-760872efecb95017db8e-3.14.0a1%2B-760872e-vs-3.12.6.svg) | 1.01x ↓
[📄](results/bm-20241016-3.14.0a1%2B-760872e/bm-20241016-vultr-x86_64-python-760872efecb95017db8e-3.14.0a1%2B-760872e-vs-3.13.0rc2.md)[📈](results/bm-20241016-3.14.0a1%2B-760872e/bm-20241016-vultr-x86_64-python-760872efecb95017db8e-3.14.0a1%2B-760872e-vs-3.13.0rc2.svg) | | | [2024-10-18](results/bm-20241018-3.14.0a0-819f30a-NOGIL) | mpage/gh_115999_tlbc_call | 819f30a (NOGIL) | 1.50x ↓
[📄](results/bm-20241018-3.14.0a0-819f30a-NOGIL/bm-20241018-vultr-x86_64-mpage-gh_115999_tlbc_call-3.14.0a0-819f30a-vs-3.12.6.md)[📈](results/bm-20241018-3.14.0a0-819f30a-NOGIL/bm-20241018-vultr-x86_64-mpage-gh_115999_tlbc_call-3.14.0a0-819f30a-vs-3.12.6.svg) | 1.53x ↓
[📄](results/bm-20241018-3.14.0a0-819f30a-NOGIL/bm-20241018-vultr-x86_64-mpage-gh_115999_tlbc_call-3.14.0a0-819f30a-vs-3.13.0rc2.md)[📈](results/bm-20241018-3.14.0a0-819f30a-NOGIL/bm-20241018-vultr-x86_64-mpage-gh_115999_tlbc_call-3.14.0a0-819f30a-vs-3.13.0rc2.svg) | 1.03x ↑
[📄](results/bm-20241018-3.14.0a0-819f30a-NOGIL/bm-20241018-vultr-x86_64-mpage-gh_115999_tlbc_call-3.14.0a0-819f30a-vs-base.md)[📈](results/bm-20241018-3.14.0a0-819f30a-NOGIL/bm-20241018-vultr-x86_64-mpage-gh_115999_tlbc_call-3.14.0a0-819f30a-vs-base.svg)[🧠](results/bm-20241018-3.14.0a0-819f30a-NOGIL/bm-20241018-vultr-x86_64-mpage-gh_115999_tlbc_call-3.14.0a0-819f30a-vs-base-mem.svg) | diff --git a/RESULTS.md b/RESULTS.md index 05b010ed..ed3830f5 100644 --- a/RESULTS.md +++ b/RESULTS.md @@ -1,6 +1,8 @@ # Benchmark results +[Most recent pystats on main (8f5e39d)](results/bm-20241019-3.14.0a1%2B-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-pystats.md) + ## linux x86_64 (linux) | date | fork/ref | hash/flags | vs. 3.12.6: | vs. 3.13.0rc2: | vs. base: | | --- | --- | --- | ---: | ---: | ---: | @@ -101,6 +103,8 @@ ## linux x86_64 (vultr) | date | fork/ref | hash/flags | vs. 3.12.6: | vs. 3.13.0rc2: | vs. base: | | --- | --- | --- | ---: | ---: | ---: | +| [2024-10-19](results/bm-20241019-3.14.0a1%2B-8f5e39d) | python/8f5e39d5c885318e3128 | 8f5e39d | 1.01x ↓
[📄](results/bm-20241019-3.14.0a1%2B-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-3.12.6.md)[📈](results/bm-20241019-3.14.0a1%2B-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-3.12.6.svg) | 1.02x ↓
[📄](results/bm-20241019-3.14.0a1%2B-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-3.13.0rc2.md)[📈](results/bm-20241019-3.14.0a1%2B-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-3.13.0rc2.svg) | | +| [2024-10-19](results/bm-20241019-3.14.0a1%2B-8f5e39d-NOGIL) | python/8f5e39d5c885318e3128 | 8f5e39d (NOGIL) | 1.55x ↓
[📄](results/bm-20241019-3.14.0a1%2B-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-3.12.6.md)[📈](results/bm-20241019-3.14.0a1%2B-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-3.12.6.svg) | 1.57x ↓
[📄](results/bm-20241019-3.14.0a1%2B-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-3.13.0rc2.md)[📈](results/bm-20241019-3.14.0a1%2B-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-3.13.0rc2.svg) | 1.54x ↓
[📄](results/bm-20241019-3.14.0a1%2B-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-base.md)[📈](results/bm-20241019-3.14.0a1%2B-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-base.svg)[🧠](results/bm-20241019-3.14.0a1%2B-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-base-mem.svg) | | [2024-10-18](results/bm-20241018-3.14.0a1%2B-2e950e3) | python/main | 2e950e3 | 1.01x ↑
[📄](results/bm-20241018-3.14.0a1%2B-2e950e3/bm-20241018-vultr-x86_64-python-main-3.14.0a1%2B-2e950e3-vs-3.12.6.md)[📈](results/bm-20241018-3.14.0a1%2B-2e950e3/bm-20241018-vultr-x86_64-python-main-3.14.0a1%2B-2e950e3-vs-3.12.6.svg) | 1.01x ↓
[📄](results/bm-20241018-3.14.0a1%2B-2e950e3/bm-20241018-vultr-x86_64-python-main-3.14.0a1%2B-2e950e3-vs-3.13.0rc2.md)[📈](results/bm-20241018-3.14.0a1%2B-2e950e3/bm-20241018-vultr-x86_64-python-main-3.14.0a1%2B-2e950e3-vs-3.13.0rc2.svg) | | | [2024-10-18](results/bm-20241018-3.14.0a1%2B-322f14e-NOGIL) | python/322f14eeff9e3b5853ea | 322f14e (NOGIL) | 1.55x ↓
[📄](results/bm-20241018-3.14.0a1%2B-322f14e-NOGIL/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1%2B-322f14e-vs-3.12.6.md)[📈](results/bm-20241018-3.14.0a1%2B-322f14e-NOGIL/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1%2B-322f14e-vs-3.12.6.svg) | 1.57x ↓
[📄](results/bm-20241018-3.14.0a1%2B-322f14e-NOGIL/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1%2B-322f14e-vs-3.13.0rc2.md)[📈](results/bm-20241018-3.14.0a1%2B-322f14e-NOGIL/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1%2B-322f14e-vs-3.13.0rc2.svg) | 1.55x ↓
[📄](results/bm-20241018-3.14.0a1%2B-322f14e-NOGIL/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1%2B-322f14e-vs-base.md)[📈](results/bm-20241018-3.14.0a1%2B-322f14e-NOGIL/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1%2B-322f14e-vs-base.svg)[🧠](results/bm-20241018-3.14.0a1%2B-322f14e-NOGIL/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1%2B-322f14e-vs-base-mem.svg) | | [2024-10-18](results/bm-20241018-3.14.0a1%2B-322f14e) | python/322f14eeff9e3b5853ea | 322f14e | 1.00x ↑
[📄](results/bm-20241018-3.14.0a1%2B-322f14e/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1%2B-322f14e-vs-3.12.6.md)[📈](results/bm-20241018-3.14.0a1%2B-322f14e/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1%2B-322f14e-vs-3.12.6.svg) | 1.01x ↓
[📄](results/bm-20241018-3.14.0a1%2B-322f14e/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1%2B-322f14e-vs-3.13.0rc2.md)[📈](results/bm-20241018-3.14.0a1%2B-322f14e/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1%2B-322f14e-vs-3.13.0rc2.svg) | | diff --git a/configs.json b/configs.json index 12403a2a..e69f4b06 100644 --- a/configs.json +++ b/configs.json @@ -23,5 +23,6 @@ "bm-20240930-3.14.0a0-fac5e7a/bm-20240930-linux-x86_64-python-fac5e7aa171f8547fcb5-3.14.0a0-fac5e7a.json,bm-20240930-3.14.0a0-fac5e7a-NOGIL/bm-20240930-linux-x86_64-python-fac5e7aa171f8547fcb5-3.14.0a0-fac5e7a.json": 1.0, "bm-20241005-3.14.0a0-16cd6cc/bm-20241005-vultr-x86_64-python-16cd6cc86b3ba20074ae-3.14.0a0-16cd6cc.json,bm-20241005-3.14.0a0-16cd6cc-NOGIL/bm-20241005-vultr-x86_64-python-16cd6cc86b3ba20074ae-3.14.0a0-16cd6cc.json": 0.6499999999999999, "bm-20241012-3.14.0a0-330c527/bm-20241012-vultr-x86_64-python-330c527299a5380f39c6-3.14.0a0-330c527.json,bm-20241012-3.14.0a0-330c527-NOGIL/bm-20241012-vultr-x86_64-python-330c527299a5380f39c6-3.14.0a0-330c527.json": 0.5900000000000001, - "bm-20241018-3.14.0a1+-322f14e/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1+-322f14e.json,bm-20241018-3.14.0a1+-322f14e-NOGIL/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1+-322f14e.json": 0.5700000000000001 + "bm-20241018-3.14.0a1+-322f14e/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1+-322f14e.json,bm-20241018-3.14.0a1+-322f14e-NOGIL/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1+-322f14e.json": 0.5700000000000001, + "bm-20241019-3.14.0a1+-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d.json,bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d.json": 0.5700000000000001 } \ No newline at end of file diff --git a/longitudinal.json b/longitudinal.json index 1d91d40e..38f21970 100644 --- a/longitudinal.json +++ b/longitudinal.json @@ -59,5 +59,6 @@ "bm-20240920-3.13.0rc2-4981ec5/bm-20240920-vultr-x86_64-python-4981ec59ded050919eb2-3.13.0rc2-4981ec5.json,bm-20241016-3.14.0a1+-760872e/bm-20241016-vultr-x86_64-python-760872efecb95017db8e-3.14.0a1+-760872e.json,3.13.0rc2": 1.0, "bm-20240920-3.13.0rc2-4981ec5/bm-20240920-vultr-x86_64-python-4981ec59ded050919eb2-3.13.0rc2-4981ec5.json,bm-20241017-3.14.0a1+-a0f5c8e/bm-20241017-vultr-x86_64-python-main-3.14.0a1+-a0f5c8e.json,3.13.0rc2": 1.0, "bm-20240920-3.13.0rc2-4981ec5/bm-20240920-vultr-x86_64-python-4981ec59ded050919eb2-3.13.0rc2-4981ec5.json,bm-20241018-3.14.0a1+-2e950e3/bm-20241018-vultr-x86_64-python-main-3.14.0a1+-2e950e3.json,3.13.0rc2": 1.0, - "bm-20240920-3.13.0rc2-4981ec5/bm-20240920-vultr-x86_64-python-4981ec59ded050919eb2-3.13.0rc2-4981ec5.json,bm-20241018-3.14.0a1+-322f14e/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1+-322f14e.json,3.13.0rc2": 1.0 + "bm-20240920-3.13.0rc2-4981ec5/bm-20240920-vultr-x86_64-python-4981ec59ded050919eb2-3.13.0rc2-4981ec5.json,bm-20241018-3.14.0a1+-322f14e/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1+-322f14e.json,3.13.0rc2": 1.0, + "bm-20240920-3.13.0rc2-4981ec5/bm-20240920-vultr-x86_64-python-4981ec59ded050919eb2-3.13.0rc2-4981ec5.json,bm-20241019-3.14.0a1+-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d.json,3.13.0rc2": 1.0 } \ No newline at end of file diff --git a/longitudinal.svg b/longitudinal.svg index cc56ca93..5a53ca90 100644 --- a/longitudinal.svg +++ b/longitudinal.svg @@ -386,9 +386,9 @@ - - - + + + @@ -400,9 +400,9 @@ - - - + + + @@ -414,9 +414,9 @@ - - - + + + @@ -428,9 +428,9 @@ - - - + + + @@ -442,9 +442,9 @@ - - - + + + @@ -456,9 +456,9 @@ - - - + + + @@ -552,44 +552,45 @@ - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - + + + + + + + + + diff --git a/memory_configs.json b/memory_configs.json index 051f6e33..4ef2c665 100644 --- a/memory_configs.json +++ b/memory_configs.json @@ -23,5 +23,6 @@ "bm-20240930-3.14.0a0-fac5e7a/bm-20240930-linux-x86_64-python-fac5e7aa171f8547fcb5-3.14.0a0-fac5e7a.json,bm-20240930-3.14.0a0-fac5e7a-NOGIL/bm-20240930-linux-x86_64-python-fac5e7aa171f8547fcb5-3.14.0a0-fac5e7a.json": 1.12, "bm-20241005-3.14.0a0-16cd6cc/bm-20241005-vultr-x86_64-python-16cd6cc86b3ba20074ae-3.14.0a0-16cd6cc.json,bm-20241005-3.14.0a0-16cd6cc-NOGIL/bm-20241005-vultr-x86_64-python-16cd6cc86b3ba20074ae-3.14.0a0-16cd6cc.json": 1.16, "bm-20241012-3.14.0a0-330c527/bm-20241012-vultr-x86_64-python-330c527299a5380f39c6-3.14.0a0-330c527.json,bm-20241012-3.14.0a0-330c527-NOGIL/bm-20241012-vultr-x86_64-python-330c527299a5380f39c6-3.14.0a0-330c527.json": 1.17, - "bm-20241018-3.14.0a1+-322f14e/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1+-322f14e.json,bm-20241018-3.14.0a1+-322f14e-NOGIL/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1+-322f14e.json": 1.18 + "bm-20241018-3.14.0a1+-322f14e/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1+-322f14e.json,bm-20241018-3.14.0a1+-322f14e-NOGIL/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1+-322f14e.json": 1.18, + "bm-20241019-3.14.0a1+-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d.json,bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d.json": 1.18 } \ No newline at end of file diff --git a/memory_configs.svg b/memory_configs.svg index 38f160ec..dda71d96 100644 --- a/memory_configs.svg +++ b/memory_configs.svg @@ -8,9 +8,9 @@ - + - + @@ -28,7 +28,7 @@ - + @@ -43,7 +43,7 @@ - + @@ -58,7 +58,7 @@ - + @@ -73,7 +73,7 @@ - + @@ -85,7 +85,7 @@ - + @@ -97,7 +97,7 @@ - + @@ -112,7 +112,7 @@ - + - + @@ -140,9 +140,9 @@ - + - + @@ -155,7 +155,7 @@ - + @@ -164,7 +164,7 @@ - + @@ -173,7 +173,7 @@ - + @@ -182,7 +182,7 @@ - + @@ -191,7 +191,7 @@ - + @@ -200,7 +200,7 @@ - + @@ -209,7 +209,7 @@ - + @@ -218,7 +218,7 @@ - + @@ -363,21 +363,21 @@ - + - + - + @@ -387,28 +387,28 @@ - + - + - + - + @@ -417,7 +417,7 @@ - + @@ -426,7 +426,7 @@ - + @@ -435,7 +435,7 @@ - + @@ -444,7 +444,7 @@ - + @@ -453,7 +453,7 @@ - + diff --git a/memory_long.json b/memory_long.json index 5a34325c..3cabe15f 100644 --- a/memory_long.json +++ b/memory_long.json @@ -59,5 +59,6 @@ "bm-20240920-3.13.0rc2-4981ec5/bm-20240920-vultr-x86_64-python-4981ec59ded050919eb2-3.13.0rc2-4981ec5.json,bm-20241016-3.14.0a1+-760872e/bm-20241016-vultr-x86_64-python-760872efecb95017db8e-3.14.0a1+-760872e.json,3.13.0rc2": 1.0, "bm-20240920-3.13.0rc2-4981ec5/bm-20240920-vultr-x86_64-python-4981ec59ded050919eb2-3.13.0rc2-4981ec5.json,bm-20241017-3.14.0a1+-a0f5c8e/bm-20241017-vultr-x86_64-python-main-3.14.0a1+-a0f5c8e.json,3.13.0rc2": 0.97, "bm-20240920-3.13.0rc2-4981ec5/bm-20240920-vultr-x86_64-python-4981ec59ded050919eb2-3.13.0rc2-4981ec5.json,bm-20241018-3.14.0a1+-2e950e3/bm-20241018-vultr-x86_64-python-main-3.14.0a1+-2e950e3.json,3.13.0rc2": 1.0, - "bm-20240920-3.13.0rc2-4981ec5/bm-20240920-vultr-x86_64-python-4981ec59ded050919eb2-3.13.0rc2-4981ec5.json,bm-20241018-3.14.0a1+-322f14e/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1+-322f14e.json,3.13.0rc2": 1.0 + "bm-20240920-3.13.0rc2-4981ec5/bm-20240920-vultr-x86_64-python-4981ec59ded050919eb2-3.13.0rc2-4981ec5.json,bm-20241018-3.14.0a1+-322f14e/bm-20241018-vultr-x86_64-python-322f14eeff9e3b5853ea-3.14.0a1+-322f14e.json,3.13.0rc2": 1.0, + "bm-20240920-3.13.0rc2-4981ec5/bm-20240920-vultr-x86_64-python-4981ec59ded050919eb2-3.13.0rc2-4981ec5.json,bm-20241019-3.14.0a1+-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d.json,3.13.0rc2": 1.0 } \ No newline at end of file diff --git a/memory_long.svg b/memory_long.svg index 01206f6b..7a7e701a 100644 --- a/memory_long.svg +++ b/memory_long.svg @@ -380,9 +380,9 @@ - - - + + + @@ -394,9 +394,9 @@ - - - + + + @@ -408,9 +408,9 @@ - - - + + + @@ -422,9 +422,9 @@ - - - + + + @@ -436,9 +436,9 @@ - - - + + + @@ -450,9 +450,9 @@ - - - + + + @@ -546,43 +546,44 @@ - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - + + + + + + + + + diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/README.md b/results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/README.md new file mode 100644 index 00000000..4247b7a2 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/README.md @@ -0,0 +1,41 @@ +# Results + +- fork: python +- version: 3.14.0a1+ +- config: NOGIL +- commit hash: [8f5e39d](https://github.com/python/cpython/commit/8f5e39d) +- commit date: 2024-10-19T17:46:57-04:00 +- commit merge base: [4c53b2577531c77193430cdcd66ad6385fcda81f](https://github.com/python/cpython/commit/4c53b2577531c77193430cdcd66ad6385fcda81f) +- ref: 8f5e39d5c885318e3128 + +## linux x86_64 (vultr) + +- [GitHub Action run](https://github.com/facebookexperimental/free-threading-benchmarking/actions/runs/11421789318) +- cpu model: Intel(R) Xeon(R) E-2286G CPU @ 4.00GHz +- platform: Linux-6.8.0-45-generic-x86_64-with-glibc2.39 +- [raw results](bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d.json) + +### vs. 3.12.6 + +- Geometric mean: 1.55x slower (HPT: reliability of 100.00%, 1.40x slower at 99th %ile) +- Memory usage: 1.21x +- missing benchmarks: aiohttp, async_tree_cpu_io_mixed, async_tree_cpu_io_mixed_tg, async_tree_io, async_tree_io_tg, async_tree_memoization, async_tree_memoization_tg, async_tree_none, async_tree_none_tg, chameleon, dask, flaskblogging, gunicorn, mypy2, sqlalchemy_declarative, sqlalchemy_imperative +- [📄table](bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-3.12.6.md) +- [📈time plot](bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-3.12.6.svg) + +### vs. 3.13.0rc2 + +- Geometric mean: 1.57x slower (HPT: reliability of 100.00%, 1.41x slower at 99th %ile) +- Memory usage: 1.19x +- missing benchmarks: aiohttp, async_tree_cpu_io_mixed, async_tree_cpu_io_mixed_tg, async_tree_io, async_tree_io_tg, async_tree_memoization, async_tree_memoization_tg, async_tree_none, async_tree_none_tg, chameleon, dask, flaskblogging, gunicorn +- [📄table](bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-3.13.0rc2.md) +- [📈time plot](bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-3.13.0rc2.svg) + +### vs. base + +- Geometric mean: 1.54x slower (HPT: reliability of 100.00%, 1.43x slower at 99th %ile) +- Memory usage: 1.18x +- [🧠memory plot](bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-base-mem.svg) +- [📄table](bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-base.md) +- [📈time plot](bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-base.svg) + diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.12.6.md b/results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.12.6.md new file mode 100644 index 00000000..e9422cae --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.12.6.md @@ -0,0 +1,205 @@ +# Results vs. 3.12.6 + +- fork: python +- ref: 8f5e39d5c885318e3128 +- machine: linux-x86_64 +- commit hash: 8f5e39d +- commit date: 2024-10-19 +- overall geometric mean: 1.55x slower +- HPT reliability: 100.00% +- HPT 99th percentile: 1.40x slower +- Memory change: 1.21x + +Benchmarks with tag 'apps': +=========================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.12.6-3.12.6-a4a2d2b | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|----------------|:------------------------------------------------------:|:----------------------------------------------------------------------:| +| 2to3 | 264 ms | 414 ms: 1.57x slower | +| docutils | 2.64 sec | 3.35 sec: 1.27x slower | +| html5lib | 63.6 ms | 105 ms: 1.65x slower | +| tornado_http | 119 ms | 164 ms: 1.37x slower | +| Geometric mean | (ref) | 1.46x slower | + +Benchmarks with tag 'asyncio': +============================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.12.6-3.12.6-a4a2d2b | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|--------------------|:------------------------------------------------------:|:----------------------------------------------------------------------:| +| asyncio_websockets | 517 ms | 519 ms: 1.00x slower | +| asyncio_tcp | 519 ms | 582 ms: 1.12x slower | +| asyncio_tcp_ssl | 1.51 sec | 1.74 sec: 1.15x slower | +| async_generators | 384 ms | 487 ms: 1.27x slower | +| coroutines | 23.9 ms | 32.3 ms: 1.35x slower | +| Geometric mean | (ref) | 1.17x slower | + +Benchmarks with tag 'math': +=========================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.12.6-3.12.6-a4a2d2b | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|----------------|:------------------------------------------------------:|:----------------------------------------------------------------------:| +| pidigits | 184 ms | 184 ms: 1.00x faster | +| float | 80.8 ms | 154 ms: 1.91x slower | +| nbody | 89.3 ms | 225 ms: 2.53x slower | +| Geometric mean | (ref) | 1.69x slower | + +Benchmarks with tag 'regex': +============================ + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.12.6-3.12.6-a4a2d2b | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|----------------|:------------------------------------------------------:|:----------------------------------------------------------------------:| +| regex_effbot | 3.17 ms | 3.00 ms: 1.06x faster | +| regex_dna | 168 ms | 187 ms: 1.12x slower | +| regex_v8 | 20.6 ms | 25.3 ms: 1.23x slower | +| regex_compile | 142 ms | 231 ms: 1.62x slower | +| Geometric mean | (ref) | 1.20x slower | + +Benchmarks with tag 'serialize': +================================ + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.12.6-3.12.6-a4a2d2b | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|----------------------|:------------------------------------------------------:|:----------------------------------------------------------------------:| +| xml_etree_parse | 139 ms | 133 ms: 1.04x faster | +| pickle | 10.9 us | 10.7 us: 1.02x faster | +| pickle_dict | 31.8 us | 31.8 us: 1.00x slower | +| unpickle | 14.1 us | 14.7 us: 1.05x slower | +| unpickle_list | 4.67 us | 4.99 us: 1.07x slower | +| json_loads | 26.5 us | 29.7 us: 1.12x slower | +| xml_etree_iterparse | 96.7 ms | 109 ms: 1.13x slower | +| xml_etree_generate | 85.2 ms | 114 ms: 1.34x slower | +| json_dumps | 10.4 ms | 15.1 ms: 1.46x slower | +| tomli_loads | 2.11 sec | 3.33 sec: 1.58x slower | +| xml_etree_process | 59.0 ms | 93.3 ms: 1.58x slower | +| unpickle_pure_python | 221 us | 422 us: 1.91x slower | +| pickle_pure_python | 308 us | 613 us: 1.99x slower | +| Geometric mean | (ref) | 1.26x slower | + +Benchmark hidden because not significant (1): pickle_list + +Benchmarks with tag 'startup': +============================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.12.6-3.12.6-a4a2d2b | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|------------------------|:------------------------------------------------------:|:----------------------------------------------------------------------:| +| python_startup_no_site | 7.16 ms | 10.0 ms: 1.40x slower | +| python_startup | 9.93 ms | 15.4 ms: 1.55x slower | +| Geometric mean | (ref) | 1.47x slower | + +Benchmarks with tag 'template': +=============================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.12.6-3.12.6-a4a2d2b | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|-----------------|:------------------------------------------------------:|:----------------------------------------------------------------------:| +| genshi_xml | 50.2 ms | 81.0 ms: 1.61x slower | +| genshi_text | 22.8 ms | 40.0 ms: 1.75x slower | +| django_template | 34.7 ms | 65.2 ms: 1.88x slower | +| mako | 11.0 ms | 20.9 ms: 1.90x slower | +| Geometric mean | (ref) | 1.78x slower | + +All benchmarks: +=============== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.12.6-3.12.6-a4a2d2b | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|--------------------------|:------------------------------------------------------:|:----------------------------------------------------------------------:| +| gc_traversal | 3.46 ms | 2.56 ms: 1.35x faster | +| regex_effbot | 3.17 ms | 3.00 ms: 1.06x faster | +| xml_etree_parse | 139 ms | 133 ms: 1.04x faster | +| pickle | 10.9 us | 10.7 us: 1.02x faster | +| pidigits | 184 ms | 184 ms: 1.00x faster | +| pickle_dict | 31.8 us | 31.8 us: 1.00x slower | +| asyncio_websockets | 517 ms | 519 ms: 1.00x slower | +| create_gc_cycles | 1.09 ms | 1.11 ms: 1.02x slower | +| pathlib | 21.5 ms | 21.9 ms: 1.02x slower | +| unpickle | 14.1 us | 14.7 us: 1.05x slower | +| unpickle_list | 4.67 us | 4.99 us: 1.07x slower | +| json | 5.02 ms | 5.44 ms: 1.08x slower | +| sqlite_synth | 2.20 us | 2.43 us: 1.10x slower | +| regex_dna | 168 ms | 187 ms: 1.12x slower | +| json_loads | 26.5 us | 29.7 us: 1.12x slower | +| asyncio_tcp | 519 ms | 582 ms: 1.12x slower | +| xml_etree_iterparse | 96.7 ms | 109 ms: 1.13x slower | +| asyncio_tcp_ssl | 1.51 sec | 1.74 sec: 1.15x slower | +| regex_v8 | 20.6 ms | 25.3 ms: 1.23x slower | +| deepcopy | 352 us | 441 us: 1.25x slower | +| mdp | 2.42 sec | 3.06 sec: 1.26x slower | +| async_generators | 384 ms | 487 ms: 1.27x slower | +| docutils | 2.64 sec | 3.35 sec: 1.27x slower | +| generators | 32.2 ms | 41.6 ms: 1.29x slower | +| pylint | 319 ms | 419 ms: 1.31x slower | +| dulwich_log | 78.9 ms | 104 ms: 1.32x slower | +| bpe_tokeniser | 4.74 sec | 6.30 sec: 1.33x slower | +| xml_etree_generate | 85.2 ms | 114 ms: 1.34x slower | +| meteor_contest | 104 ms | 139 ms: 1.34x slower | +| coroutines | 23.9 ms | 32.3 ms: 1.35x slower | +| deepcopy_memo | 40.3 us | 54.7 us: 1.36x slower | +| scimark_fft | 342 ms | 466 ms: 1.36x slower | +| tornado_http | 119 ms | 164 ms: 1.37x slower | +| python_startup_no_site | 7.16 ms | 10.0 ms: 1.40x slower | +| coverage | 71.4 ms | 103 ms: 1.45x slower | +| telco | 6.53 ms | 9.46 ms: 1.45x slower | +| json_dumps | 10.4 ms | 15.1 ms: 1.46x slower | +| crypto_pyaes | 76.6 ms | 112 ms: 1.46x slower | +| scimark_sparse_mat_mult | 4.39 ms | 6.50 ms: 1.48x slower | +| nqueens | 80.1 ms | 119 ms: 1.48x slower | +| pycparser | 1.17 sec | 1.75 sec: 1.50x slower | +| deepcopy_reduce | 3.08 us | 4.63 us: 1.51x slower | +| typing_runtime_protocols | 163 us | 249 us: 1.52x slower | +| comprehensions | 19.8 us | 30.5 us: 1.54x slower | +| python_startup | 9.93 ms | 15.4 ms: 1.55x slower | +| 2to3 | 264 ms | 414 ms: 1.57x slower | +| tomli_loads | 2.11 sec | 3.33 sec: 1.58x slower | +| xml_etree_process | 59.0 ms | 93.3 ms: 1.58x slower | +| fannkuch | 372 ms | 590 ms: 1.59x slower | +| thrift | 791 us | 1.27 ms: 1.61x slower | +| sympy_integrate | 20.5 ms | 33.0 ms: 1.61x slower | +| genshi_xml | 50.2 ms | 81.0 ms: 1.61x slower | +| spectral_norm | 110 ms | 179 ms: 1.62x slower | +| regex_compile | 142 ms | 231 ms: 1.62x slower | +| html5lib | 63.6 ms | 105 ms: 1.65x slower | +| sqlglot_normalize | 107 ms | 180 ms: 1.69x slower | +| sqlglot_optimize | 53.3 ms | 91.0 ms: 1.71x slower | +| genshi_text | 22.8 ms | 40.0 ms: 1.75x slower | +| pyflate | 448 ms | 786 ms: 1.76x slower | +| pprint_safe_repr | 743 ms | 1.35 sec: 1.82x slower | +| logging_simple | 6.63 us | 12.1 us: 1.83x slower | +| logging_format | 7.35 us | 13.5 us: 1.84x slower | +| pprint_pformat | 1.52 sec | 2.80 sec: 1.84x slower | +| sympy_str | 292 ms | 539 ms: 1.85x slower | +| django_template | 34.7 ms | 65.2 ms: 1.88x slower | +| mako | 11.0 ms | 20.9 ms: 1.90x slower | +| float | 80.8 ms | 154 ms: 1.91x slower | +| scimark_monte_carlo | 68.4 ms | 131 ms: 1.91x slower | +| unpickle_pure_python | 221 us | 422 us: 1.91x slower | +| logging_silent | 109 ns | 213 ns: 1.96x slower | +| richards | 45.9 ms | 90.6 ms: 1.97x slower | +| sqlglot_transpile | 1.67 ms | 3.33 ms: 1.99x slower | +| pickle_pure_python | 308 us | 613 us: 1.99x slower | +| hexiom | 6.17 ms | 12.5 ms: 2.03x slower | +| chaos | 62.8 ms | 130 ms: 2.08x slower | +| richards_super | 51.9 ms | 109 ms: 2.09x slower | +| sqlglot_parse | 1.36 ms | 2.87 ms: 2.12x slower | +| scimark_sor | 130 ms | 277 ms: 2.14x slower | +| scimark_lu | 114 ms | 247 ms: 2.17x slower | +| raytrace | 299 ms | 649 ms: 2.17x slower | +| go | 139 ms | 305 ms: 2.19x slower | +| sympy_expand | 468 ms | 1.05 sec: 2.25x slower | +| sympy_sum | 166 ms | 382 ms: 2.30x slower | +| nbody | 89.3 ms | 225 ms: 2.53x slower | +| unpack_sequence | 52.1 ns | 136 ns: 2.61x slower | +| deltablue | 3.45 ms | 9.09 ms: 2.64x slower | +| bench_thread_pool | 941 us | 3.19 ms: 3.38x slower | +| bench_mp_pool | 10.8 ms | 70.5 ms: 6.53x slower | +| Geometric mean | (ref) | 1.55x slower | + +Benchmark hidden because not significant (1): pickle_list +Ignored benchmarks (16) of results/bm-20240906-3.12.6-a4a2d2b/bm-20240906-vultr-x86_64-python-v3.12.6-3.12.6-a4a2d2b.json: aiohttp, async_tree_cpu_io_mixed, async_tree_cpu_io_mixed_tg, async_tree_io, async_tree_io_tg, async_tree_memoization, async_tree_memoization_tg, async_tree_none, async_tree_none_tg, chameleon, dask, flaskblogging, gunicorn, mypy2, sqlalchemy_declarative, sqlalchemy_imperative + +# HPT report + +- Reliability score: 100.00% likely to be slow +- 90% likely to have a slowdown of 1.47x +- 95% likely to have a slowdown of 1.46x +- 99% likely to have a slowdown of 1.40x + +# Memory +- memory change: 1.21x \ No newline at end of file diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.12.6.svg b/results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.12.6.svg new file mode 100644 index 00000000..84866fec --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.12.6.svg @@ -0,0 +1,3086 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.13.0rc2.md b/results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.13.0rc2.md new file mode 100644 index 00000000..ded2cfe8 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.13.0rc2.md @@ -0,0 +1,205 @@ +# Results vs. 3.13.0rc2 + +- fork: python +- ref: 8f5e39d5c885318e3128 +- machine: linux-x86_64 +- commit hash: 8f5e39d +- commit date: 2024-10-19 +- overall geometric mean: 1.57x slower +- HPT reliability: 100.00% +- HPT 99th percentile: 1.41x slower +- Memory change: 1.19x + +Benchmarks with tag 'apps': +=========================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.13.0rc2-3.13.0rc2-ec61006 | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|----------------|:------------------------------------------------------------:|:----------------------------------------------------------------------:| +| 2to3 | 260 ms | 414 ms: 1.59x slower | +| docutils | 2.62 sec | 3.35 sec: 1.28x slower | +| html5lib | 67.0 ms | 105 ms: 1.57x slower | +| tornado_http | 114 ms | 164 ms: 1.43x slower | +| Geometric mean | (ref) | 1.46x slower | + +Benchmarks with tag 'asyncio': +============================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.13.0rc2-3.13.0rc2-ec61006 | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|------------------|:------------------------------------------------------------:|:----------------------------------------------------------------------:| +| asyncio_tcp | 505 ms | 582 ms: 1.15x slower | +| asyncio_tcp_ssl | 1.51 sec | 1.74 sec: 1.15x slower | +| async_generators | 377 ms | 487 ms: 1.29x slower | +| coroutines | 23.6 ms | 32.3 ms: 1.37x slower | +| Geometric mean | (ref) | 1.19x slower | + +Benchmark hidden because not significant (1): asyncio_websockets + +Benchmarks with tag 'math': +=========================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.13.0rc2-3.13.0rc2-ec61006 | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|----------------|:------------------------------------------------------------:|:----------------------------------------------------------------------:| +| pidigits | 217 ms | 184 ms: 1.18x faster | +| float | 77.5 ms | 154 ms: 1.99x slower | +| nbody | 85.1 ms | 225 ms: 2.65x slower | +| Geometric mean | (ref) | 1.65x slower | + +Benchmarks with tag 'regex': +============================ + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.13.0rc2-3.13.0rc2-ec61006 | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|----------------|:------------------------------------------------------------:|:----------------------------------------------------------------------:| +| regex_effbot | 3.08 ms | 3.00 ms: 1.03x faster | +| regex_dna | 180 ms | 187 ms: 1.04x slower | +| regex_v8 | 22.7 ms | 25.3 ms: 1.11x slower | +| regex_compile | 132 ms | 231 ms: 1.75x slower | +| Geometric mean | (ref) | 1.18x slower | + +Benchmarks with tag 'serialize': +================================ + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.13.0rc2-3.13.0rc2-ec61006 | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|----------------------|:------------------------------------------------------------:|:----------------------------------------------------------------------:| +| pickle | 11.3 us | 10.7 us: 1.06x faster | +| pickle_list | 4.93 us | 4.77 us: 1.03x faster | +| xml_etree_parse | 136 ms | 133 ms: 1.03x faster | +| pickle_dict | 32.5 us | 31.8 us: 1.02x faster | +| unpickle | 14.3 us | 14.7 us: 1.03x slower | +| unpickle_list | 4.71 us | 4.99 us: 1.06x slower | +| json_loads | 27.0 us | 29.7 us: 1.10x slower | +| xml_etree_iterparse | 94.9 ms | 109 ms: 1.15x slower | +| xml_etree_generate | 85.4 ms | 114 ms: 1.33x slower | +| json_dumps | 10.5 ms | 15.1 ms: 1.44x slower | +| xml_etree_process | 59.3 ms | 93.3 ms: 1.57x slower | +| tomli_loads | 2.01 sec | 3.33 sec: 1.66x slower | +| unpickle_pure_python | 210 us | 422 us: 2.01x slower | +| pickle_pure_python | 294 us | 613 us: 2.08x slower | +| Geometric mean | (ref) | 1.26x slower | + +Benchmarks with tag 'startup': +============================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.13.0rc2-3.13.0rc2-ec61006 | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|------------------------|:------------------------------------------------------------:|:----------------------------------------------------------------------:| +| python_startup_no_site | 7.39 ms | 10.0 ms: 1.36x slower | +| python_startup | 11.0 ms | 15.4 ms: 1.40x slower | +| Geometric mean | (ref) | 1.38x slower | + +Benchmarks with tag 'template': +=============================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.13.0rc2-3.13.0rc2-ec61006 | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|-----------------|:------------------------------------------------------------:|:----------------------------------------------------------------------:| +| genshi_xml | 48.8 ms | 81.0 ms: 1.66x slower | +| mako | 11.3 ms | 20.9 ms: 1.85x slower | +| genshi_text | 21.5 ms | 40.0 ms: 1.86x slower | +| django_template | 34.1 ms | 65.2 ms: 1.91x slower | +| Geometric mean | (ref) | 1.82x slower | + +All benchmarks: +=============== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.13.0rc2-3.13.0rc2-ec61006 | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|--------------------------|:------------------------------------------------------------:|:----------------------------------------------------------------------:| +| gc_traversal | 3.14 ms | 2.56 ms: 1.23x faster | +| create_gc_cycles | 1.34 ms | 1.11 ms: 1.21x faster | +| pidigits | 217 ms | 184 ms: 1.18x faster | +| pickle | 11.3 us | 10.7 us: 1.06x faster | +| pickle_list | 4.93 us | 4.77 us: 1.03x faster | +| regex_effbot | 3.08 ms | 3.00 ms: 1.03x faster | +| xml_etree_parse | 136 ms | 133 ms: 1.03x faster | +| pickle_dict | 32.5 us | 31.8 us: 1.02x faster | +| unpickle | 14.3 us | 14.7 us: 1.03x slower | +| regex_dna | 180 ms | 187 ms: 1.04x slower | +| unpickle_list | 4.71 us | 4.99 us: 1.06x slower | +| sqlite_synth | 2.21 us | 2.43 us: 1.10x slower | +| json_loads | 27.0 us | 29.7 us: 1.10x slower | +| json | 4.93 ms | 5.44 ms: 1.10x slower | +| regex_v8 | 22.7 ms | 25.3 ms: 1.11x slower | +| pathlib | 19.2 ms | 21.9 ms: 1.14x slower | +| xml_etree_iterparse | 94.9 ms | 109 ms: 1.15x slower | +| asyncio_tcp | 505 ms | 582 ms: 1.15x slower | +| asyncio_tcp_ssl | 1.51 sec | 1.74 sec: 1.15x slower | +| telco | 7.82 ms | 9.46 ms: 1.21x slower | +| deepcopy | 355 us | 441 us: 1.24x slower | +| coverage | 83.0 ms | 103 ms: 1.25x slower | +| docutils | 2.62 sec | 3.35 sec: 1.28x slower | +| async_generators | 377 ms | 487 ms: 1.29x slower | +| mdp | 2.36 sec | 3.06 sec: 1.30x slower | +| pylint | 317 ms | 419 ms: 1.32x slower | +| scimark_fft | 349 ms | 466 ms: 1.33x slower | +| xml_etree_generate | 85.4 ms | 114 ms: 1.33x slower | +| python_startup_no_site | 7.39 ms | 10.0 ms: 1.36x slower | +| meteor_contest | 102 ms | 139 ms: 1.37x slower | +| coroutines | 23.6 ms | 32.3 ms: 1.37x slower | +| scimark_sparse_mat_mult | 4.71 ms | 6.50 ms: 1.38x slower | +| dulwich_log | 74.8 ms | 104 ms: 1.39x slower | +| python_startup | 11.0 ms | 15.4 ms: 1.40x slower | +| deepcopy_memo | 39.1 us | 54.7 us: 1.40x slower | +| bpe_tokeniser | 4.45 sec | 6.30 sec: 1.42x slower | +| tornado_http | 114 ms | 164 ms: 1.43x slower | +| json_dumps | 10.5 ms | 15.1 ms: 1.44x slower | +| generators | 28.8 ms | 41.6 ms: 1.44x slower | +| deepcopy_reduce | 3.11 us | 4.63 us: 1.49x slower | +| nqueens | 78.6 ms | 119 ms: 1.51x slower | +| pycparser | 1.12 sec | 1.75 sec: 1.57x slower | +| html5lib | 67.0 ms | 105 ms: 1.57x slower | +| xml_etree_process | 59.3 ms | 93.3 ms: 1.57x slower | +| 2to3 | 260 ms | 414 ms: 1.59x slower | +| fannkuch | 370 ms | 590 ms: 1.60x slower | +| typing_runtime_protocols | 155 us | 249 us: 1.61x slower | +| spectral_norm | 111 ms | 179 ms: 1.61x slower | +| thrift | 778 us | 1.27 ms: 1.63x slower | +| crypto_pyaes | 67.9 ms | 112 ms: 1.65x slower | +| tomli_loads | 2.01 sec | 3.33 sec: 1.66x slower | +| genshi_xml | 48.8 ms | 81.0 ms: 1.66x slower | +| sympy_integrate | 19.8 ms | 33.0 ms: 1.67x slower | +| sqlglot_normalize | 106 ms | 180 ms: 1.71x slower | +| sqlglot_optimize | 52.7 ms | 91.0 ms: 1.73x slower | +| regex_compile | 132 ms | 231 ms: 1.75x slower | +| pyflate | 449 ms | 786 ms: 1.75x slower | +| pprint_safe_repr | 738 ms | 1.35 sec: 1.83x slower | +| mako | 11.3 ms | 20.9 ms: 1.85x slower | +| comprehensions | 16.5 us | 30.5 us: 1.85x slower | +| genshi_text | 21.5 ms | 40.0 ms: 1.86x slower | +| pprint_pformat | 1.50 sec | 2.80 sec: 1.87x slower | +| django_template | 34.1 ms | 65.2 ms: 1.91x slower | +| sympy_str | 275 ms | 539 ms: 1.96x slower | +| logging_simple | 6.16 us | 12.1 us: 1.97x slower | +| logging_format | 6.84 us | 13.5 us: 1.97x slower | +| float | 77.5 ms | 154 ms: 1.99x slower | +| richards | 45.2 ms | 90.6 ms: 2.00x slower | +| scimark_monte_carlo | 65.4 ms | 131 ms: 2.00x slower | +| unpickle_pure_python | 210 us | 422 us: 2.01x slower | +| scimark_sor | 134 ms | 277 ms: 2.06x slower | +| logging_silent | 103 ns | 213 ns: 2.08x slower | +| pickle_pure_python | 294 us | 613 us: 2.08x slower | +| hexiom | 5.99 ms | 12.5 ms: 2.09x slower | +| richards_super | 51.6 ms | 109 ms: 2.10x slower | +| sqlglot_transpile | 1.56 ms | 3.33 ms: 2.13x slower | +| go | 141 ms | 305 ms: 2.16x slower | +| scimark_lu | 113 ms | 247 ms: 2.20x slower | +| chaos | 57.3 ms | 130 ms: 2.28x slower | +| sqlglot_parse | 1.25 ms | 2.87 ms: 2.30x slower | +| sympy_expand | 457 ms | 1.05 sec: 2.30x slower | +| sympy_sum | 156 ms | 382 ms: 2.46x slower | +| raytrace | 253 ms | 649 ms: 2.57x slower | +| nbody | 85.1 ms | 225 ms: 2.65x slower | +| deltablue | 3.12 ms | 9.09 ms: 2.91x slower | +| unpack_sequence | 44.8 ns | 136 ns: 3.04x slower | +| bench_thread_pool | 919 us | 3.19 ms: 3.47x slower | +| bench_mp_pool | 11.0 ms | 70.5 ms: 6.41x slower | +| Geometric mean | (ref) | 1.57x slower | + +Benchmark hidden because not significant (1): asyncio_websockets +Ignored benchmarks (13) of results/bm-20240906-3.13.0rc2-ec61006/bm-20240906-vultr-x86_64-python-v3.13.0rc2-3.13.0rc2-ec61006.json: aiohttp, async_tree_cpu_io_mixed, async_tree_cpu_io_mixed_tg, async_tree_io, async_tree_io_tg, async_tree_memoization, async_tree_memoization_tg, async_tree_none, async_tree_none_tg, chameleon, dask, flaskblogging, gunicorn + +# HPT report + +- Reliability score: 100.00% likely to be slow +- 90% likely to have a slowdown of 1.49x +- 95% likely to have a slowdown of 1.46x +- 99% likely to have a slowdown of 1.41x + +# Memory +- memory change: 1.19x \ No newline at end of file diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.13.0rc2.svg b/results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.13.0rc2.svg new file mode 100644 index 00000000..2ec653e6 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.13.0rc2.svg @@ -0,0 +1,3066 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-base-mem.svg b/results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-base-mem.svg new file mode 100644 index 00000000..93e4c9f0 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-base-mem.svg @@ -0,0 +1,2281 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-base.md new file mode 100644 index 00000000..296f0709 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-base.md @@ -0,0 +1,204 @@ +# Results vs. base + +- fork: python +- ref: 8f5e39d5c885318e3128 +- machine: linux-x86_64 +- commit hash: 8f5e39d +- commit date: 2024-10-19 +- overall geometric mean: 1.54x slower +- HPT reliability: 100.00% +- HPT 99th percentile: 1.43x slower +- Memory change: 1.18x + +Benchmarks with tag 'apps': +=========================== + +| Benchmark | results/bm-20241019-3.14.0a1+-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d.json | results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d.json | +|----------------|:-----------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------:| +| 2to3 | 252 ms | 414 ms: 1.64x slower | +| docutils | 2.62 sec | 3.35 sec: 1.28x slower | +| html5lib | 66.2 ms | 105 ms: 1.59x slower | +| tornado_http | 113 ms | 164 ms: 1.45x slower | +| Geometric mean | (ref) | 1.48x slower | + +Benchmarks with tag 'asyncio': +============================== + +| Benchmark | results/bm-20241019-3.14.0a1+-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d.json | results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d.json | +|------------------|:-----------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------:| +| asyncio_tcp_ssl | 1.52 sec | 1.74 sec: 1.14x slower | +| asyncio_tcp | 503 ms | 582 ms: 1.16x slower | +| async_generators | 376 ms | 487 ms: 1.29x slower | +| coroutines | 22.6 ms | 32.3 ms: 1.43x slower | +| Geometric mean | (ref) | 1.20x slower | + +Benchmark hidden because not significant (1): asyncio_websockets + +Benchmarks with tag 'math': +=========================== + +| Benchmark | results/bm-20241019-3.14.0a1+-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d.json | results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d.json | +|----------------|:-----------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------:| +| pidigits | 217 ms | 184 ms: 1.18x faster | +| float | 79.0 ms | 154 ms: 1.95x slower | +| nbody | 94.0 ms | 225 ms: 2.40x slower | +| Geometric mean | (ref) | 1.58x slower | + +Benchmarks with tag 'regex': +============================ + +| Benchmark | results/bm-20241019-3.14.0a1+-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d.json | results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d.json | +|----------------|:-----------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------:| +| regex_effbot | 3.27 ms | 3.00 ms: 1.09x faster | +| regex_dna | 179 ms | 187 ms: 1.05x slower | +| regex_v8 | 23.7 ms | 25.3 ms: 1.07x slower | +| regex_compile | 131 ms | 231 ms: 1.76x slower | +| Geometric mean | (ref) | 1.16x slower | + +Benchmarks with tag 'serialize': +================================ + +| Benchmark | results/bm-20241019-3.14.0a1+-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d.json | results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d.json | +|----------------------|:-----------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------:| +| pickle | 11.3 us | 10.7 us: 1.05x faster | +| pickle_dict | 32.9 us | 31.8 us: 1.03x faster | +| xml_etree_parse | 137 ms | 133 ms: 1.03x faster | +| pickle_list | 4.91 us | 4.77 us: 1.03x faster | +| unpickle_list | 4.87 us | 4.99 us: 1.03x slower | +| unpickle | 13.7 us | 14.7 us: 1.08x slower | +| xml_etree_iterparse | 96.2 ms | 109 ms: 1.13x slower | +| json_loads | 26.1 us | 29.7 us: 1.14x slower | +| json_dumps | 11.5 ms | 15.1 ms: 1.31x slower | +| xml_etree_generate | 85.6 ms | 114 ms: 1.33x slower | +| xml_etree_process | 59.6 ms | 93.3 ms: 1.57x slower | +| tomli_loads | 2.12 sec | 3.33 sec: 1.57x slower | +| unpickle_pure_python | 217 us | 422 us: 1.94x slower | +| pickle_pure_python | 312 us | 613 us: 1.97x slower | +| Geometric mean | (ref) | 1.24x slower | + +Benchmarks with tag 'startup': +============================== + +| Benchmark | results/bm-20241019-3.14.0a1+-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d.json | results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d.json | +|------------------------|:-----------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------:| +| python_startup_no_site | 7.38 ms | 10.0 ms: 1.36x slower | +| python_startup | 11.0 ms | 15.4 ms: 1.40x slower | +| Geometric mean | (ref) | 1.38x slower | + +Benchmarks with tag 'template': +=============================== + +| Benchmark | results/bm-20241019-3.14.0a1+-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d.json | results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d.json | +|-----------------|:-----------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------:| +| genshi_xml | 49.7 ms | 81.0 ms: 1.63x slower | +| mako | 12.0 ms | 20.9 ms: 1.75x slower | +| genshi_text | 22.1 ms | 40.0 ms: 1.81x slower | +| django_template | 35.5 ms | 65.2 ms: 1.84x slower | +| Geometric mean | (ref) | 1.75x slower | + +All benchmarks: +=============== + +| Benchmark | results/bm-20241019-3.14.0a1+-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d.json | results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d.json | +|--------------------------|:-----------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------:| +| gc_traversal | 3.47 ms | 2.56 ms: 1.35x faster | +| create_gc_cycles | 1.35 ms | 1.11 ms: 1.21x faster | +| pidigits | 217 ms | 184 ms: 1.18x faster | +| regex_effbot | 3.27 ms | 3.00 ms: 1.09x faster | +| pickle | 11.3 us | 10.7 us: 1.05x faster | +| pickle_dict | 32.9 us | 31.8 us: 1.03x faster | +| xml_etree_parse | 137 ms | 133 ms: 1.03x faster | +| pickle_list | 4.91 us | 4.77 us: 1.03x faster | +| unpickle_list | 4.87 us | 4.99 us: 1.03x slower | +| regex_dna | 179 ms | 187 ms: 1.05x slower | +| regex_v8 | 23.7 ms | 25.3 ms: 1.07x slower | +| unpickle | 13.7 us | 14.7 us: 1.08x slower | +| sqlite_synth | 2.21 us | 2.43 us: 1.10x slower | +| bench_mp_pool | 62.8 ms | 70.5 ms: 1.12x slower | +| json | 4.82 ms | 5.44 ms: 1.13x slower | +| xml_etree_iterparse | 96.2 ms | 109 ms: 1.13x slower | +| json_loads | 26.1 us | 29.7 us: 1.14x slower | +| asyncio_tcp_ssl | 1.52 sec | 1.74 sec: 1.14x slower | +| asyncio_tcp | 503 ms | 582 ms: 1.16x slower | +| pathlib | 18.4 ms | 21.9 ms: 1.19x slower | +| mdp | 2.48 sec | 3.06 sec: 1.23x slower | +| coverage | 81.8 ms | 103 ms: 1.27x slower | +| docutils | 2.62 sec | 3.35 sec: 1.28x slower | +| telco | 7.33 ms | 9.46 ms: 1.29x slower | +| async_generators | 376 ms | 487 ms: 1.29x slower | +| json_dumps | 11.5 ms | 15.1 ms: 1.31x slower | +| pylint | 318 ms | 419 ms: 1.32x slower | +| xml_etree_generate | 85.6 ms | 114 ms: 1.33x slower | +| meteor_contest | 104 ms | 139 ms: 1.33x slower | +| python_startup_no_site | 7.38 ms | 10.0 ms: 1.36x slower | +| scimark_fft | 339 ms | 466 ms: 1.37x slower | +| dulwich_log | 74.3 ms | 104 ms: 1.40x slower | +| scimark_sparse_mat_mult | 4.64 ms | 6.50 ms: 1.40x slower | +| python_startup | 11.0 ms | 15.4 ms: 1.40x slower | +| coroutines | 22.6 ms | 32.3 ms: 1.43x slower | +| bpe_tokeniser | 4.39 sec | 6.30 sec: 1.44x slower | +| generators | 28.9 ms | 41.6 ms: 1.44x slower | +| tornado_http | 113 ms | 164 ms: 1.45x slower | +| nqueens | 79.2 ms | 119 ms: 1.50x slower | +| typing_runtime_protocols | 160 us | 249 us: 1.55x slower | +| fannkuch | 380 ms | 590 ms: 1.55x slower | +| pycparser | 1.12 sec | 1.75 sec: 1.56x slower | +| xml_etree_process | 59.6 ms | 93.3 ms: 1.57x slower | +| spectral_norm | 114 ms | 179 ms: 1.57x slower | +| tomli_loads | 2.12 sec | 3.33 sec: 1.57x slower | +| html5lib | 66.2 ms | 105 ms: 1.59x slower | +| crypto_pyaes | 69.2 ms | 112 ms: 1.62x slower | +| genshi_xml | 49.7 ms | 81.0 ms: 1.63x slower | +| 2to3 | 252 ms | 414 ms: 1.64x slower | +| sympy_integrate | 20.0 ms | 33.0 ms: 1.65x slower | +| deepcopy | 265 us | 441 us: 1.67x slower | +| sqlglot_normalize | 106 ms | 180 ms: 1.70x slower | +| sqlglot_optimize | 53.4 ms | 91.0 ms: 1.71x slower | +| thrift | 744 us | 1.27 ms: 1.71x slower | +| deepcopy_reduce | 2.71 us | 4.63 us: 1.71x slower | +| pyflate | 456 ms | 786 ms: 1.72x slower | +| mako | 12.0 ms | 20.9 ms: 1.75x slower | +| regex_compile | 131 ms | 231 ms: 1.76x slower | +| comprehensions | 17.2 us | 30.5 us: 1.77x slower | +| deepcopy_memo | 30.4 us | 54.7 us: 1.80x slower | +| genshi_text | 22.1 ms | 40.0 ms: 1.81x slower | +| django_template | 35.5 ms | 65.2 ms: 1.84x slower | +| pprint_safe_repr | 717 ms | 1.35 sec: 1.89x slower | +| pprint_pformat | 1.48 sec | 2.80 sec: 1.89x slower | +| richards | 47.3 ms | 90.6 ms: 1.92x slower | +| unpickle_pure_python | 217 us | 422 us: 1.94x slower | +| float | 79.0 ms | 154 ms: 1.95x slower | +| scimark_monte_carlo | 66.9 ms | 131 ms: 1.96x slower | +| pickle_pure_python | 312 us | 613 us: 1.97x slower | +| logging_format | 6.81 us | 13.5 us: 1.98x slower | +| logging_silent | 108 ns | 213 ns: 1.98x slower | +| logging_simple | 6.10 us | 12.1 us: 1.99x slower | +| sympy_str | 271 ms | 539 ms: 1.99x slower | +| scimark_sor | 136 ms | 277 ms: 2.03x slower | +| richards_super | 53.1 ms | 109 ms: 2.04x slower | +| hexiom | 6.12 ms | 12.5 ms: 2.05x slower | +| sqlglot_transpile | 1.60 ms | 3.33 ms: 2.08x slower | +| chaos | 59.9 ms | 130 ms: 2.18x slower | +| scimark_lu | 113 ms | 247 ms: 2.19x slower | +| sqlglot_parse | 1.29 ms | 2.87 ms: 2.23x slower | +| sympy_expand | 457 ms | 1.05 sec: 2.31x slower | +| nbody | 94.0 ms | 225 ms: 2.40x slower | +| raytrace | 265 ms | 649 ms: 2.44x slower | +| go | 122 ms | 305 ms: 2.49x slower | +| sympy_sum | 153 ms | 382 ms: 2.50x slower | +| deltablue | 3.24 ms | 9.09 ms: 2.81x slower | +| unpack_sequence | 48.1 ns | 136 ns: 2.83x slower | +| bench_thread_pool | 1.02 ms | 3.19 ms: 3.14x slower | +| Geometric mean | (ref) | 1.54x slower | + +Benchmark hidden because not significant (1): asyncio_websockets + +# HPT report + +- Reliability score: 100.00% likely to be slow +- 90% likely to have a slowdown of 1.48x +- 95% likely to have a slowdown of 1.45x +- 99% likely to have a slowdown of 1.43x + +# Memory +- memory change: 1.18x \ No newline at end of file diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-base.svg b/results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-base.svg new file mode 100644 index 00000000..76b250b7 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-NOGIL/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-base.svg @@ -0,0 +1,3067 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-2to3-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-2to3-vs-base.md new file mode 100644 index 00000000..f80ad3a5 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-2to3-vs-base.md @@ -0,0 +1,2754 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD1,000920-8.0%
FOR_ITER_TUPLE1,1401,060-7.0%
POP_TOP2,5802,6603.1%
LOAD_FAST25,46025,4600.0%
LOAD_CONST8,7408,7400.0%
STORE_FAST6,2406,2400.0%
POP_JUMP_IF_FALSE5,1405,1400.0%
LOAD_ATTR3,9403,9400.0%
LOAD_GLOBAL_MODULE3,7403,7400.0%
LOAD_FAST_LOAD_FAST3,2603,2600.0%
RESUME_CHECK3,0003,0000.0%
CALL2,7402,7400.0%
LOAD_GLOBAL2,7402,7400.0%
LOAD_ATTR_INSTANCE_VALUE2,5202,5200.0%
LOAD_GLOBAL_BUILTIN2,4202,4200.0%
POP_JUMP_IF_NOT_NONE2,2402,2400.0%
STORE_ATTR_INSTANCE_VALUE2,1202,1200.0%
LOAD_ATTR_MODULE2,0802,0800.0%
COMPARE_OP_INT1,9401,9400.0%
TO_BOOL_BOOL1,9001,9000.0%
TO_BOOL1,8801,8800.0%
RETURN_VALUE1,8201,8200.0%
POP_JUMP_IF_TRUE1,8001,8000.0%
PUSH_NULL1,7601,7600.0%
RETURN_CONST1,6801,6800.0%
BUILD_TUPLE1,4401,4400.0%
STORE_ATTR1,4401,4400.0%
LOAD_ATTR_METHOD_NO_DICT1,2401,2400.0%
CALL_PY_EXACT_ARGS1,2201,2200.0%
COMPARE_OP1,1801,1800.0%
INTERPRETER_EXIT1,0801,0800.0%
NOP1,0401,0400.0%
SWAP9809800.0%
CALL_BUILTIN_FAST9809800.0%
LOAD_DEREF8008000.0%
POP_JUMP_IF_NONE8008000.0%
LOAD_ATTR_METHOD_WITH_VALUES7807800.0%
COPY7207200.0%
UNPACK_SEQUENCE_TWO_TUPLE7207200.0%
CALL_NON_PY_GENERAL6806800.0%
RESUME6606600.0%
LOAD_SPECIAL6406400.0%
STORE_FAST_STORE_FAST6406400.0%
CALL_METHOD_DESCRIPTOR_FAST6006000.0%
BUILD_LIST5605600.0%
CALL_FUNCTION_EX5605600.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS5605600.0%
CALL_PY_GENERAL5405400.0%
BINARY_OP4804800.0%
BUILD_MAP4804800.0%
DELETE_ATTR4804800.0%
CALL_ISINSTANCE4804800.0%
GET_ITER4404400.0%
DICT_MERGE4004000.0%
JUMP_FORWARD4004000.0%
MAKE_CELL4004000.0%
CALL_LIST_APPEND4004000.0%
UNPACK_SEQUENCE3603600.0%
BINARY_SUBSCR3003000.0%
TO_BOOL_NONE3003000.0%
TO_BOOL_STR3003000.0%
BINARY_SLICE2402400.0%
COPY_FREE_VARS2402400.0%
TO_BOOL_INT2402400.0%
CALL_LEN2202200.0%
LOAD_ATTR_CLASS2002000.0%
IS_OP1801800.0%
BINARY_SUBSCR_LIST_INT1801800.0%
CALL_BUILTIN_CLASS1801800.0%
CALL_METHOD_DESCRIPTOR_O1801800.0%
STORE_SUBSCR_DICT1801800.0%
CHECK_EXC_MATCH1601600.0%
MAKE_FUNCTION1601600.0%
POP_EXCEPT1601600.0%
PUSH_EXC_INFO1601600.0%
RETURN_GENERATOR1601600.0%
CALL_KW1601600.0%
EXTENDED_ARG1601600.0%
FOR_ITER1601600.0%
SET_FUNCTION_ATTRIBUTE1601600.0%
STORE_DEREF1601600.0%
YIELD_VALUE1601600.0%
BINARY_OP_ADD_INT1601600.0%
COMPARE_OP_STR1601600.0%
STORE_SUBSCR1201200.0%
BINARY_SUBSCR_TUPLE_INT1201200.0%
CALL_KW_NON_PY1201200.0%
CALL_KW_PY1201200.0%
CALL_METHOD_DESCRIPTOR_NOARGS1201200.0%
LOAD_ATTR_METHOD_LAZY_DICT1201200.0%
LOAD_ATTR_SLOT1201200.0%
BINARY_OP_INPLACE_ADD_UNICODE80800.0%
CALL_INTRINSIC_180800.0%
LIST_EXTEND80800.0%
BINARY_OP_ADD_UNICODE80800.0%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS60600.0%
CALL_STR_160600.0%
CALL_TYPE_160600.0%
FOR_ITER_LIST60600.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK60600.0%
TO_BOOL_ALWAYS_TRUE60600.0%
TO_BOOL_LIST60600.0%
UNPACK_SEQUENCE_TUPLE60600.0%
CONTAINS_OP40400.0%
ENTER_EXECUTOR80
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
40050.0%40050.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
32040.0%32040.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success00.0%00.0%
Failure80100.0%80100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
add other6075.0%6075.0%0.0%
multiply different types2025.0%2025.0%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
240100.0%240100.0%0.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
18030.0%18030.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
30050.0%30050.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success10083.3%10083.3%0.0%
Failure2016.7%2016.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
list slice20100.0%20100.0%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,38017.6%1,38017.6%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
5,12065.1%5,12065.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,440100.0%1,440100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
8050.0%8050.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
62018.9%62018.9%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,10064.0%2,10064.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success54096.4%54096.4%0.0%
Failure203.6%203.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
different types20100.0%20100.0%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
40100.0%40100.0%0.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,20088.2%1,12087.5%-6.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
805.9%806.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success80100.0%80100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,06018.6%2,06018.6%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
7,12064.4%7,12064.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,84097.9%1,84097.9%0.0%
Failure402.1%402.1%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,40015.7%1,40015.7%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
5,76064.7%5,76064.7%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
4004.5%4004.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,380100.0%1,380100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
84023.6%84023.6%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,12059.6%2,12059.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success52086.7%52086.7%0.0%
Failure8013.3%8013.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
class attr simple6075.0%6075.0%0.0%
not managed dict2025.0%2025.0%0.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6020.0%6020.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
18060.0%18060.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success60100.0%60100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,06022.6%1,06022.6%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,80059.8%2,80059.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success74090.2%74090.2%0.0%
Failure809.8%809.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
sequence4050.0%4050.0%0.0%
tuple4050.0%4050.0%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
18015.8%18015.8%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
78068.4%78068.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success180100.0%180100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
32,32025.9%32,24025.8%-0.2%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
76,26061.1%76,34061.2%0.1%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
15,78012.6%15,78012.6%0.0%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
4000.3%4000.3%0.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
LOAD_ATTR2,06023.9%2,06023.9%0.0%
LOAD_GLOBAL1,40016.2%1,40016.2%0.0%
CALL1,38016.0%1,38016.0%0.0%
TO_BOOL1,06012.3%1,06012.3%0.0%
STORE_ATTR8409.7%8409.7%0.0%
COMPARE_OP6207.2%6207.2%0.0%
BINARY_OP4004.6%4004.6%0.0%
BINARY_SLICE2402.8%2402.8%0.0%
BINARY_SUBSCR1802.1%1802.1%0.0%
UNPACK_SEQUENCE1802.1%1802.1%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
LOAD_GLOBAL_BUILTIN400100.0%400100.0%0.0%
CACHE00.0%00.0%
BINARY_OP_INPLACE_ADD_UNICODE00.0%00.0%
CHECK_EXC_MATCH00.0%00.0%
GET_ITER00.0%00.0%
INTERPRETER_EXIT00.0%00.0%
MAKE_FUNCTION00.0%00.0%
NOP00.0%00.0%
POP_EXCEPT00.0%00.0%
POP_TOP00.0%00.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault1,08028.3%1,08028.3%0.0%
Calls to Python functions inlined2,74071.7%2,74071.7%0.0%
Calls via PyEval_EvalFrame (total)1,08028.3%1,08028.3%0.0%
Calls via PyEval_EvalFrame (vector)76019.9%76019.9%0.0%
Calls via PyEval_EvalFrame (generator)3208.4%3208.4%0.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)76019.9%76019.9%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)3208.4%3208.4%0.0%
Calls via PyEval_EvalFrame (api)1604.2%1604.2%0.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created1604.2%1604.2%0.0%
Frames pushed3,50091.6%3,50091.6%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache collisions1,2511,53122.4%
Method cache misses1,6131,7428.0%
Method cache dunder misses4244332.1%
Method cache hits7,1677,038-1.8%
Immortal decrefs25,85619.6%26,07819.7%0.9%
Immortal increfs26,30221.2%26,51421.3%0.8%
Method cache dunder hits1,9761,967-0.5%
Mortal decrefs31,93224.2%32,05224.2%0.4%
Interpreter immortal decrefs27,34020.7%27,42020.7%0.3%
Interpreter mortal increfs38,22030.8%38,30030.7%0.2%
Mortal increfs28,41922.9%28,47622.9%0.2%
Frees9,6459,644-0.0%
Allocations from freelist5,98038.6%5,98038.6%0.0%
Frees to freelist6,0406,0400.0%
Allocations9,52061.4%9,52061.4%0.0%
Allocations to 512 bytes9,28059.9%9,28059.9%0.0%
Allocations to 4 kbytes800.5%800.5%0.0%
Allocations over 4 kbytes1601.0%1601.0%0.0%
Inline values4004000.0%
Interpreter mortal decrefs47,00035.6%47,00035.5%0.0%
Interpreter immortal increfs31,32025.2%31,32025.1%0.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-async_generators-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-async_generators-vs-base.md new file mode 100644 index 00000000..4f50a9c2 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-async_generators-vs-base.md @@ -0,0 +1,4087 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD125,696,24027,660-100.0%
GET_ANEXT133,515,6808,000,900-94.0%
FOR_ITER_RANGE23,5202,680-88.6%
LIST_APPEND34,2607,680-77.6%
FOR_ITER73,70018,520-74.9%
STORE_FAST_LOAD_FAST29,2207,620-73.9%
STORE_SUBSCR19,0805,000-73.8%
CONVERT_VALUE10,9003,200-70.6%
FOR_ITER_GEN520160-69.2%
LOAD_CONST182,267,88056,620,340-68.9%
FOR_ITER_TUPLE64,88023,360-64.0%
UNPACK_SEQUENCE_TWO_TUPLE60,38021,840-63.8%
BINARY_SUBSCR_LIST_INT14,6805,420-63.1%
BUILD_STRING18,5406,860-63.0%
STORE_FAST_STORE_FAST52,70020,560-61.0%
FOR_ITER_LIST42,38016,600-60.8%
FORMAT_SIMPLE22,4209,240-58.8%
TO_BOOL_STR31,32013,180-57.9%
LOAD_FAST_AND_CLEAR10,9004,860-55.4%
STORE_SUBSCR_LIST_INT8,0603,840-52.4%
LOAD_NAME89,92047,320-47.4%
CALL_BOUND_METHOD_EXACT_ARGS37,04019,540-47.2%
CONTAINS_OP32,08017,000-47.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS41,98022,400-46.6%
BINARY_SUBSCR_STR_INT37,66020,160-46.5%
CALL_ISINSTANCE40,68021,840-46.3%
EXTENDED_ARG60,64034,100-43.8%
CALL_TYPE_13,9202,380-39.3%
BINARY_SUBSCR_DICT28,32017,320-38.8%
NOP136,58085,900-37.1%
CONTAINS_OP_DICT29,62018,920-36.1%
COMPARE_OP_STR84,32054,000-36.0%
COMPARE_OP_FLOAT1,7201,120-34.9%
BINARY_OP_ADD_UNICODE21,52014,400-33.1%
MAP_ADD10,2406,860-33.0%
SWAP97,02066,160-31.8%
LIST_EXTEND6,1004,200-31.1%
POP_JUMP_IF_TRUE175,080124,460-28.9%
CONTAINS_OP_SET37,66026,820-28.8%
CALL_METHOD_DESCRIPTOR_FAST95,10068,600-27.9%
CALL_METHOD_DESCRIPTOR_NOARGS6,7604,980-26.3%
BUILD_LIST39,30030,680-21.9%
IS_OP51,62040,380-21.8%
BINARY_OP_SUBTRACT_INT13,42010,580-21.2%
CALL_BUILTIN_CLASS10,9808,660-21.1%
POP_JUMP_IF_NOT_NONE82,12065,160-20.7%
CALL_PY_GENERAL31,68025,140-20.6%
BINARY_OP_INPLACE_ADD_UNICODE2,1201,700-19.8%
BINARY_SUBSCR_GETITEM7,6006,140-19.2%
LOAD_ATTR_MODULE125,820102,720-18.4%
GET_ITER40,92033,600-17.9%
COPY96,84080,680-16.7%
BINARY_SUBSCR_TUPLE_INT30,16025,880-14.2%
UNARY_NOT1,8601,600-14.0%
CALL_BUILTIN_O31,38027,140-13.5%
CALL_BUILTIN_FAST58,76051,040-13.1%
BUILD_TUPLE44,34038,840-12.4%
LOAD_SPECIAL37,20032,720-12.0%
TO_BOOL_LIST11,0809,860-11.0%
STORE_SUBSCR_DICT30,86027,660-10.4%
LOAD_ATTR91,34082,920-9.2%
STORE_NAME103,40094,240-8.9%
DICT_MERGE6,2805,780-8.0%
TO_BOOL_INT23,58021,760-7.7%
LOAD_FAST_CHECK6,4805,980-7.7%
LOAD_DEREF51,82049,180-5.1%
STORE_ATTR40,02038,500-3.8%
JUMP_FORWARD33,02031,780-3.8%
CALL_LIST_APPEND22,56021,760-3.5%
BUILD_MAP23,32022,560-3.3%
LOAD_ATTR_SLOT25,18024,360-3.3%
STORE_DEREF7,0806,960-1.7%
TO_BOOL13,68013,540-1.0%
TO_BOOL_BOOL8,229,6208,166,600-0.8%
SET_FUNCTION_ATTRIBUTE19,52019,400-0.6%
PUSH_NULL8,136,5208,091,400-0.6%
LOAD_GLOBAL_BUILTIN16,264,66016,208,400-0.3%
COPY_FREE_VARS34,98034,860-0.3%
BINARY_OP_ADD_INT8,043,2208,017,560-0.3%
POP_JUMP_IF_FALSE40,427,96040,311,380-0.3%
LOAD_ATTR_METHOD_NO_DICT16,157,74016,118,020-0.2%
MAKE_FUNCTION51,76051,640-0.2%
LOAD_GLOBAL_MODULE32,410,94032,337,660-0.2%
LOAD_ATTR_METHOD_WITH_VALUES8,054,5808,037,600-0.2%
LOAD_FAST271,367,960270,811,160-0.2%
STORE_ATTR_INSTANCE_VALUE24,109,24024,078,320-0.1%
BINARY_OP8,040,6208,030,440-0.1%
CALL_PY_EXACT_ARGS24,160,38024,131,140-0.1%
LOAD_FAST_LOAD_FAST48,259,90048,202,120-0.1%
RETURN_VALUE16,192,12016,172,980-0.1%
LOAD_ATTR_INSTANCE_VALUE72,280,46072,202,440-0.1%
STORE_FAST158,023,780157,853,800-0.1%
BINARY_SUBSCR8,032,1008,025,380-0.1%
CALL_METHOD_DESCRIPTOR_O16,034,46016,021,960-0.1%
BINARY_SLICE16,017,00016,004,900-0.1%
CALL_LEN16,065,80016,053,980-0.1%
COMPARE_OP_INT16,060,10016,049,120-0.1%
POP_JUMP_IF_NONE8,037,7408,032,640-0.1%
RETURN_CONST48,153,30048,134,420-0.0%
CALL_NON_PY_GENERAL16,101,14016,095,320-0.0%
RESUME_CHECK181,848,700181,785,000-0.0%
TO_BOOL_NONE8,080,3808,078,380-0.0%
POP_TOP157,785,000157,755,360-0.0%
CALL_ALLOC_AND_ENTER_INIT8,011,3008,011,040-0.0%
CALL_INTRINSIC_1125,521,480125,519,580-0.0%
RETURN_GENERATOR8,003,1808,003,060-0.0%
INTERPRETER_EXIT157,585,460157,585,4600.0%
SEND133,548,900133,548,9000.0%
YIELD_VALUE125,520,460125,520,4600.0%
END_SEND125,515,760125,515,7600.0%
TO_BOOL_ALWAYS_TRUE8,069,9808,069,9800.0%
EXIT_INIT_CHECK8,011,2208,011,2200.0%
END_ASYNC_FOR8,000,0008,000,0000.0%
GET_AITER8,000,0008,000,0000.0%
JUMP_BACKWARD_NO_INTERRUPT5,248,9005,248,9000.0%
CALL27,84027,8400.0%
LOAD_SUPER_ATTR_METHOD25,08025,0800.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK22,66022,6600.0%
COMPARE_OP18,62018,6200.0%
LOAD_GLOBAL13,08013,0800.0%
CALL_FUNCTION_EX12,58012,5800.0%
MAKE_CELL11,88011,8800.0%
CALL_KW_PY9,5409,5400.0%
RESUME8,7608,7600.0%
STORE_ATTR_SLOT8,2608,2600.0%
CHECK_EXC_MATCH8,2008,2000.0%
POP_EXCEPT8,2008,2000.0%
PUSH_EXC_INFO8,2008,2000.0%
IMPORT_NAME7,5807,5800.0%
LOAD_ATTR_PROPERTY5,8605,8600.0%
IMPORT_FROM5,1005,1000.0%
LOAD_BUILD_CLASS4,0604,0600.0%
UNPACK_SEQUENCE_TUPLE3,8203,8200.0%
CALL_STR_13,4203,4200.0%
LOAD_LOCALS3,2403,2400.0%
CALL_TUPLE_12,3002,3000.0%
RERAISE2,1202,1200.0%
LOAD_ATTR_CLASS2,1202,1200.0%
CALL_KW_NON_PY2,0802,0800.0%
BINARY_OP_MULTIPLY_INT1,7401,7400.0%
LOAD_SUPER_ATTR_ATTR1,3801,3800.0%
CALL_KW1,3001,3000.0%
DELETE_SUBSCR1,2601,2600.0%
BUILD_SET1,1801,1800.0%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS1,0601,0600.0%
LOAD_ATTR_METHOD_LAZY_DICT1,0401,0400.0%
CALL_KW_BOUND_METHOD7607600.0%
UNARY_INVERT7007000.0%
LOAD_SUPER_ATTR6606600.0%
LOAD_ATTR_NONDESCRIPTOR_NO_DICT6606600.0%
UNPACK_SEQUENCE5405400.0%
RAISE_VARARGS4804800.0%
DELETE_NAME3803800.0%
DICT_UPDATE3003000.0%
UNARY_NEGATIVE2402400.0%
DELETE_FAST1601600.0%
STORE_GLOBAL1401400.0%
BINARY_OP_ADD_FLOAT1401400.0%
STORE_SLICE1001000.0%
CALL_INTRINSIC_280800.0%
GET_AWAITABLE80800.0%
SET_UPDATE80800.0%
END_FOR60600.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
CALL_BOUND_METHOD_GENERAL60600.0%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES60600.0%
SEND_GEN60600.0%
LOAD_FROM_DICT_OR_DEREF40400.0%
ENTER_EXECUTOR125,595,920
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
8,082,22050.1%8,046,18050.0%-0.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
8,036,52049.8%8,026,48049.9%-0.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure3,62088.3%3,48087.9%-3.9%
Success48011.7%48012.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
and int72019.9%68019.5%-5.6%
floor divide2,34064.6%2,24064.4%-4.3%
or3008.3%3008.6%0.0%
power802.2%802.3%0.0%
add different types601.7%601.7%0.0%
add other601.7%601.7%0.0%
multiply different types401.1%401.1%0.0%
and different types200.6%200.6%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
16,017,000100.0%16,004,900100.0%-0.1%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
116,1401.4%72,6400.9%-37.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
8,029,38098.5%8,022,70099.0%-0.1%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
2,2800.0%2,2800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure2,44088.4%2,40088.2%-1.6%
Success32011.6%32011.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
string slice1204.9%803.3%-33.3%
sequence int2,14087.7%2,14089.2%0.0%
out of range1004.1%1004.2%0.0%
tuple slice401.6%401.7%0.0%
other200.8%200.8%0.0%
list slice200.8%200.8%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
23,1600.0%21,8000.0%-5.9%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
64,641,76099.9%64,470,48099.9%-0.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
20,9800.0%20,9800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success7,440100.0%7,400100.0%-0.5%
Failure00.0%00.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
init not inline values4040 / 0 !!4040 / 0 !!0.0%
init not python2020 / 0 !!2020 / 0 !!0.0%
init not simple2020 / 0 !!2020 / 0 !!0.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,14087.7%1,14087.7%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
16,145,80099.9%16,103,90099.9%-0.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
17,4800.1%17,4800.1%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
3400.0%3400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success74064.9%74064.9%0.0%
Failure40035.1%40035.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
big int14035.0%14035.0%0.0%
different types6015.0%6015.0%0.0%
list6015.0%6015.0%0.0%
other4010.0%4010.0%0.0%
bool4010.0%4010.0%0.0%
tuple205.0%205.0%0.0%
set205.0%205.0%0.0%
baseobject205.0%205.0%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
30,98031.2%15,88025.3%-48.7%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
67,28067.7%45,74072.9%-32.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure78070.9%80071.4%2.6%
Success32029.1%32028.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
str10012.8%14017.5%40.0%
tuple34043.6%32040.0%-5.9%
other20025.6%20025.0%0.0%
list14017.9%14017.5%0.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
8600.4%1,6202.6%88.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
70,96034.6%16,46026.8%-76.8%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
130,44063.6%41,18067.2%-68.4%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure2,24081.2%1,52073.1%-32.1%
Success52018.8%56026.9%7.7%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
seq iter1406.2%603.9%-57.1%
map1205.4%603.9%-50.0%
dict values84037.5%48031.6%-42.9%
dict items70031.2%50032.9%-28.6%
itertools1808.0%16010.5%-11.1%
set1808.0%18011.8%0.0%
dict keys401.8%402.6%0.0%
enumerate200.9%201.3%0.0%
zip200.9%201.3%0.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
82,6000.1%74,2600.1%-10.1%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
96,641,92099.9%96,483,28099.9%-0.2%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
9200.0%9200.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
34,2600.0%34,2600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure2,42026.4%2,34025.8%-3.3%
Success6,74073.6%6,74074.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
class method obj602.5%200.9%-66.7%
not managed dict1405.8%1205.1%-14.3%
method48019.8%50021.4%4.2%
metaclass attribute94038.8%94040.2%0.0%
overriding descriptor36014.9%36015.4%0.0%
non overriding descriptor1405.8%1406.0%0.0%
module attr not found803.3%803.4%0.0%
expected error401.7%401.7%0.0%
builtin class method401.7%401.7%0.0%
class attr simple401.7%
overridden200.8%200.9%0.0%
mutable class200.8%200.9%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
48,572,32099.8%48,442,78099.8%-0.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
7,1200.0%7,1200.0%0.0%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
2,6200.0%2,6200.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
103,2800.2%103,2800.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success7,400100.0%7,400100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_SUPER_ATTR + +
+ specialization stats for LOAD_SUPER_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3401.3%3401.3%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
26,46097.6%26,46097.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success320100.0%320100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### SEND + +
+ specialization stats for SEND family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
133,515,700100.0%133,515,700100.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
600.0%600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success200.1%200.1%0.0%
Failure33,18099.9%33,18099.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
async generator send33,180100.0%33,180100.0%0.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
36,0600.1%34,5400.1%-4.2%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
24,115,32099.8%24,084,40099.8%-0.1%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
2,1800.0%2,1800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,70042.3%1,70042.3%0.0%
Failure2,32057.7%2,32057.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
overridden1,48063.8%1,48063.8%0.0%
split dict46019.8%46019.8%0.0%
overriding descriptor1406.0%1406.0%0.0%
no dict1205.2%1205.2%0.0%
not managed dict803.4%803.4%0.0%
mutable class200.9%200.9%0.0%
not in keys200.9%200.9%0.0%
+ + +
+ +### STORE_SLICE + +
+ specialization stats for STORE_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
100100.0%100100.0%0.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
18,34031.6%4,46012.2%-75.7%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
38,92067.1%31,50086.3%-19.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure50067.6%30055.6%-40.0%
Success24032.4%24044.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
bytearray int46092.0%26086.7%-43.5%
list slice204.0%206.7%0.0%
py simple204.0%206.7%0.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
10,8000.1%10,6600.1%-1.3%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
12,720,10063.5%12,633,80063.3%-0.7%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
7,306,40036.5%7,306,50036.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success140,48099.9%140,48099.9%0.0%
Failure1800.1%1800.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
mapping6033.3%6033.3%0.0%
sequence4022.2%4022.2%0.0%
set4022.2%4022.2%0.0%
number2011.1%2011.1%0.0%
tuple2011.1%2011.1%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
64,20099.2%25,66097.9%-60.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2600.4%2601.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success280100.0%280100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
1,770,842,02073.2%1,518,174,68070.1%-14.3%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
473,735,32019.6%472,822,36021.8%-0.2%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
165,970,6606.9%165,847,2407.7%-0.1%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
7,476,7600.3%7,476,2800.3%-0.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
FOR_ITER70,9600.0%16,4600.0%-76.8%
CONTAINS_OP30,9800.0%15,8800.0%-48.7%
LOAD_ATTR82,6000.0%74,2600.0%-10.1%
STORE_ATTR36,0600.0%34,5400.0%-4.2%
BINARY_OP8,036,5204.8%8,026,4804.8%-0.1%
BINARY_SUBSCR8,029,3804.8%8,022,7004.8%-0.1%
BINARY_SLICE16,017,0009.7%16,004,9009.7%-0.1%
SEND133,515,70080.5%133,515,70080.5%0.0%
CALL20,9800.0%20,9800.0%0.0%
STORE_SUBSCR18,3400.0%
COMPARE_OP17,4800.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
CALL_PY_EXACT_ARGS8,8800.1%7,9800.1%-10.1%
RESUME4,0000.1%4,0200.1%0.5%
RESUME_CHECK4,0000.1%4,0200.1%0.5%
TO_BOOL_NONE3,653,58048.8%3,653,58048.8%0.0%
TO_BOOL_ALWAYS_TRUE3,650,52048.8%3,650,52048.8%0.0%
LOAD_GLOBAL_MODULE58,7800.8%58,7800.8%0.0%
LOAD_GLOBAL_BUILTIN44,5000.6%44,5000.6%0.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK20,3200.3%20,3200.3%0.0%
LOAD_ATTR_MODULE9,3600.1%9,3600.1%0.0%
CALL_METHOD_DESCRIPTOR_O4,0000.1%4,0000.1%0.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault157,587,88083.0%157,587,88083.0%0.0%
Calls to Python functions inlined32,272,76017.0%32,272,76017.0%0.0%
Calls via PyEval_EvalFrame (total)157,587,88083.0%157,587,88083.0%0.0%
Calls via PyEval_EvalFrame (vector)24,065,06012.7%24,065,06012.7%0.0%
Calls via PyEval_EvalFrame (generator)133,522,82070.3%133,522,82070.3%0.0%
Calls via PyEval_EvalFrame (legacy)1,3600.0%1,3600.0%0.0%
Calls via PyEval_EvalFrame (function vectorcall)24,059,64012.7%24,059,64012.7%0.0%
Calls via PyEval_EvalFrame (build class)4,0600.0%4,0600.0%0.0%
Calls via PyEval_EvalFrame (slot)26,4800.0%26,4800.0%0.0%
Calls via PyEval_EvalFrame (function ex)1,6200.0%1,6200.0%0.0%
Calls via PyEval_EvalFrame (api)16,013,0208.4%16,013,0208.4%0.0%
Calls via PyEval_EvalFrame (method)2,7800.0%2,7800.0%0.0%
Frame objects created5,255,7602.8%5,255,7602.8%0.0%
Frames pushed64,348,44033.9%64,348,44033.9%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Interpreter immortal decrefs449,596,28014.2%575,198,36016.8%27.9%
Interpreter immortal increfs461,908,78017.8%336,223,52013.0%-27.2%
Interpreter mortal increfs976,868,42037.6%1,102,544,14042.5%12.9%
Interpreter mortal decrefs1,431,451,08045.2%1,557,107,12045.6%8.8%
Method cache dunder misses24,40522,553-7.6%
Method cache collisions66,84764,626-3.3%
Allocations to 4 kbytes38,9200.0%39,9800.0%2.7%
Allocations over 4 kbytes3,0200.0%3,0600.0%1.3%
Method cache misses62,53862,7230.3%
Method cache hits183,062182,757-0.2%
Method cache dunder hits8,314,1558,316,0070.0%
Mortal decrefs907,956,18628.7%907,986,31226.6%0.0%
Frees227,667,210227,670,2020.0%
Mortal increfs718,585,87727.7%718,592,03127.7%0.0%
Allocations228,284,68035.4%228,285,78035.4%0.0%
Frees to freelist416,921,460416,922,9400.0%
Allocations from freelist416,925,56064.6%416,927,04064.6%0.0%
Immortal decrefs376,714,75611.9%376,714,07811.0%-0.0%
Immortal increfs437,476,13716.9%437,476,34416.9%0.0%
Allocations to 512 bytes228,242,74035.4%228,242,74035.4%0.0%
Inline values8,020,5008,020,5000.0%
Materialize dict (on request)1200.0%1200.0%0.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
14,1205,620113,524,0604,1205,620113,580,720
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
80800.0%
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
04040 / 0 !!
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
04040 / 0 !!
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-asyncio_tcp-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-asyncio_tcp-vs-base.md new file mode 100644 index 00000000..86ef88bd --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-asyncio_tcp-vs-base.md @@ -0,0 +1,3525 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD2,308,7193,624-99.8%
CALL_KW_NON_PY329,7745,363-98.4%
CALL_LIST_APPEND331,1166,231-98.1%
RETURN_GENERATOR658,58219,968-97.0%
FOR_ITER_LIST1,945,312644,944-66.8%
GET_AWAITABLE986,916348,298-64.7%
TO_BOOL_LIST1,594,666643,088-59.7%
TO_BOOL2,323,4931,011,061-56.5%
FOR_ITER_RANGE1,310,530642,140-51.0%
COPY2,616,7361,321,138-49.5%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS1,297,882658,298-49.3%
FOR_ITER17,1669,495-44.7%
COMPARE_OP_INT3,626,4522,019,593-44.3%
CALL_LEN2,910,5111,630,099-44.0%
BUILD_LIST1,623,899964,729-40.6%
SEND_GEN1,636,281997,643-39.0%
JUMP_FORWARD2,606,1471,637,675-37.2%
BUILD_TUPLE997,578665,125-33.3%
GET_ITER1,933,2631,293,639-33.1%
TO_BOOL_INT3,962,6132,652,100-33.1%
BINARY_OP3,975,3462,669,170-32.9%
STORE_FAST19,378,25913,214,296-31.8%
POP_JUMP_IF_TRUE7,174,8284,897,605-31.7%
LOAD_CONST14,430,7309,926,343-31.2%
POP_JUMP_IF_NONE2,294,7511,650,962-28.1%
POP_JUMP_IF_NOT_NONE2,292,3331,652,878-27.9%
POP_JUMP_IF_FALSE17,151,13612,399,354-27.7%
NOP5,906,3574,271,500-27.7%
LOAD_GLOBAL_MODULE8,531,9996,264,695-26.6%
LOAD_ATTR_INSTANCE_VALUE30,404,77922,444,852-26.2%
CALL_METHOD_DESCRIPTOR_FAST1,308,087978,801-25.2%
UNPACK_SEQUENCE_TWO_TUPLE1,329,221999,887-24.8%
STORE_FAST_STORE_FAST1,329,6611,000,327-24.8%
LOAD_ATTR_METHOD_NO_DICT5,962,7544,622,747-22.5%
LOAD_FAST87,627,57871,420,202-18.5%
LOAD_GLOBAL_BUILTIN7,547,5686,229,668-17.5%
LOAD_ATTR_METHOD_WITH_VALUES14,751,97212,486,111-15.4%
CALL_PY_EXACT_ARGS16,054,65413,776,923-14.2%
TO_BOOL_BOOL13,101,42511,250,464-14.1%
RESUME_CHECK21,318,13718,503,026-13.2%
LOAD_FAST_LOAD_FAST7,970,1557,006,273-12.1%
PUSH_NULL3,004,0662,660,352-11.4%
FOR_ITER_TUPLE180160-11.1%
LOAD_ATTR_MODULE3,294,1292,970,043-9.8%
LOAD_ATTR4,377,3024,032,981-7.9%
POP_TOP12,503,68211,549,547-7.6%
BINARY_SLICE330,613323,105-2.3%
CALL_INTRINSIC_1981,339961,805-2.0%
LIST_EXTEND981,339961,805-2.0%
CALL_METHOD_DESCRIPTOR_NOARGS1,002,580983,082-1.9%
LOAD_ATTR_SLOT6,615,8136,530,607-1.3%
CALL_PY_GENERAL987,003979,491-0.8%
CALL_BUILTIN_FAST_WITH_KEYWORDS18,34818,4870.8%
CALL_ISINSTANCE1,323,0441,315,526-0.6%
CALL_NON_PY_GENERAL3,937,5043,922,568-0.4%
BINARY_OP_SUBTRACT_INT8,0038,0150.1%
CALL_KW_PY16,68416,7040.1%
BINARY_SUBSCR_DICT17,04417,0640.1%
COMPARE_OP19,14419,1640.1%
CALL_METHOD_DESCRIPTOR_O1,008,0031,008,2470.0%
CALL16,90016,9040.0%
CALL_BUILTIN_CLASS676,632676,7910.0%
LOAD_DEREF727,498727,6300.0%
COPY_FREE_VARS691,770691,8620.0%
CALL_FUNCTION_EX981,819981,9400.0%
STORE_SUBSCR_DICT336,753336,7890.0%
RETURN_CONST7,549,4667,550,1270.0%
RETURN_VALUE12,465,89812,466,7720.0%
UNARY_INVERT648,650648,6920.0%
INTERPRETER_EXIT2,622,9512,623,1000.0%
BINARY_OP_ADD_INT320,511320,493-0.0%
UNARY_NOT1,280,2761,280,3400.0%
BINARY_OP_MULTIPLY_INT320,251320,235-0.0%
DELETE_SUBSCR320,291320,275-0.0%
BUILD_SLICE320,291320,275-0.0%
CONTAINS_OP_DICT320,589320,6050.0%
LOAD_ATTR_PROPERTY321,111321,095-0.0%
LOAD_SUPER_ATTR_METHOD642,398642,4300.0%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES664,396664,4260.0%
STORE_ATTR_SLOT5,612,7345,612,9760.0%
SWAP668,609668,6340.0%
END_SEND986,916986,880-0.0%
JUMP_BACKWARD_NO_INTERRUPT1,307,3731,307,345-0.0%
YIELD_VALUE1,307,4531,307,425-0.0%
TO_BOOL_NONE661,508661,496-0.0%
STORE_ATTR_INSTANCE_VALUE2,268,2152,268,2530.0%
SEND659,108659,100-0.0%
CALL_BOUND_METHOD_EXACT_ARGS336,155336,1590.0%
BINARY_OP_ADD_FLOAT641,260641,2600.0%
LOAD_GLOBAL10,02010,0200.0%
STORE_ATTR7,2607,2600.0%
RESUME4,3404,3400.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK2,1602,1600.0%
IS_OP2,0802,0800.0%
MAKE_CELL1,4401,4400.0%
CALL_KW1,0001,0000.0%
CALL_TYPE_19409400.0%
LOAD_ATTR_CLASS9009000.0%
STORE_DEREF8808800.0%
LOAD_SUPER_ATTR8408400.0%
BUILD_MAP8008000.0%
BINARY_SUBSCR7607600.0%
CALL_BUILTIN_FAST7407400.0%
UNPACK_SEQUENCE6806800.0%
LOAD_SUPER_ATTR_ATTR6806800.0%
CHECK_EXC_MATCH6606600.0%
POP_EXCEPT6606600.0%
PUSH_EXC_INFO6606600.0%
MAKE_FUNCTION6406400.0%
SET_FUNCTION_ATTRIBUTE6406400.0%
CONTAINS_OP5805800.0%
CONTAINS_OP_SET5805800.0%
EXIT_INIT_CHECK5005000.0%
STORE_SUBSCR5005000.0%
CALL_ALLOC_AND_ENTER_INIT5005000.0%
BUILD_SET4004000.0%
CALL_BUILTIN_O2402400.0%
DICT_MERGE2402400.0%
EXTENDED_ARG2402400.0%
LOAD_SPECIAL2402400.0%
COMPARE_OP_STR2002000.0%
UNPACK_SEQUENCE_TUPLE1801800.0%
IMPORT_NAME1001000.0%
LIST_APPEND80800.0%
LOAD_FAST_AND_CLEAR80800.0%
RAISE_VARARGS80800.0%
RERAISE80800.0%
BINARY_SUBSCR_GETITEM80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
BINARY_SUBSCR_LIST_INT60600.0%
CALL_BOUND_METHOD_GENERAL60600.0%
IMPORT_FROM20200.0%
LOAD_FAST_CHECK20200.0%
STORE_FAST_LOAD_FAST20200.0%
STORE_GLOBAL20200.0%
BINARY_SUBSCR_TUPLE_INT20200.0%
TO_BOOL_ALWAYS_TRUE20200.0%
ENTER_EXECUTOR2,519,298
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3,971,06675.4%2,665,51067.3%-32.9%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,290,08524.5%1,290,06332.6%-0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure4,06094.9%3,44094.0%-15.3%
Success2205.1%2206.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
and int2,90071.4%2,42070.3%-16.6%
or1,10027.1%96027.9%-12.7%
floor divide401.0%401.2%0.0%
multiply different types200.5%200.6%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
330,613100.0%323,105100.0%-2.3%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
17,20495.8%17,22495.8%0.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5603.1%5603.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success8040.0%8040.0%0.0%
Failure12060.0%12060.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple slice120100.0%120100.0%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
26,603,62799.9%21,725,26399.9%-18.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
8,5800.0%8,5840.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1,9600.0%1,9600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success8,78099.5%8,78099.5%0.0%
Failure400.5%400.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
init not inline values80200.0%80200.0%0.0%
out of versions40100.0%40100.0%0.0%
init not python2050.0%2050.0%0.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
50050.0%50050.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
3,626,65299.5%2,019,79399.1%-44.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
18,0440.5%18,0640.9%0.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success56050.9%56050.9%0.0%
Failure54049.1%54049.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other22040.7%22040.7%0.0%
tuple16029.6%16029.6%0.0%
different types12022.2%12022.2%0.0%
bool407.4%407.4%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
321,16999.8%321,18599.8%0.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3800.1%3800.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success14070.0%14070.0%0.0%
Failure6030.0%6030.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
str60100.0%60100.0%0.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
3,256,02299.5%1,287,24499.3%-60.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
16,5660.5%8,9150.7%-46.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure28046.7%26044.8%-7.1%
Success32053.3%32055.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other16057.1%14053.8%-12.5%
dict items8028.6%8030.8%0.0%
set4014.3%4015.4%0.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
62,015,71493.4%50,040,64192.5%-19.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4,358,9026.6%4,014,7417.4%-7.9%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
2,3000.0%2,3000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure5,54030.1%5,38029.5%-2.9%
Success12,86069.9%12,86070.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
overriding descriptor3,66066.1%3,52065.4%-3.8%
method1,56028.2%1,54028.6%-1.3%
non object slot801.4%801.5%0.0%
builtin class method200.4%200.4%0.0%
metaclass attribute200.4%200.4%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
16,079,48799.9%12,494,28399.9%-22.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5,0800.0%5,0800.0%0.0%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
800.0%800.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
800.0%800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success4,940100.0%4,940100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_SUPER_ATTR + +
+ specialization stats for LOAD_SUPER_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
643,07899.9%643,11099.9%0.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4200.1%4200.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success420100.0%420100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### SEND + +
+ specialization stats for SEND family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,636,28171.3%997,64360.2%-39.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
657,92828.7%657,92039.7%-0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success46039.0%46039.0%0.0%
Failure72061.0%72061.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other720100.0%720100.0%0.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
7,880,94999.9%7,881,22999.9%0.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3,9800.1%3,9800.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success3,04092.7%3,04092.7%0.0%
Failure2407.3%2407.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
class attr simple12050.0%12050.0%0.0%
overridden8033.3%8033.3%0.0%
overriding descriptor4016.7%4016.7%0.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
336,75399.9%336,78999.9%0.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3200.1%3200.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success14077.8%14077.8%0.0%
Failure4022.2%4022.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
py simple40100.0%40100.0%0.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,317,76310.7%1,006,1896.2%-56.6%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
19,320,21289.3%15,207,14893.8%-21.3%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure2,65046.2%1,79236.8%-32.4%
Success3,08053.8%3,08063.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
mapping28010.6%1005.6%-64.3%
bytearray2609.8%1005.6%-61.5%
memory view1405.3%603.3%-57.1%
sequence83031.3%47226.3%-43.1%
bytes92034.7%84046.9%-8.7%
dict1806.8%18010.0%0.0%
float200.8%201.1%0.0%
tuple200.8%201.1%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,329,40199.9%1,000,06799.9%-24.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3400.0%3400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success340100.0%340100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
11,740,7122.9%8,762,6202.6%-25.4%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
228,652,23555.6%184,242,96055.6%-19.4%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
170,609,66141.5%138,352,72441.8%-18.9%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
4,3400.0%4,3710.0%0.7%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
TO_BOOL2,317,76319.8%1,006,18911.5%-56.6%
FOR_ITER16,5660.1%8,9150.1%-46.2%
BINARY_OP3,971,06634.0%2,665,51030.6%-32.9%
LOAD_ATTR4,358,90237.3%4,014,74146.1%-7.9%
BINARY_SLICE330,6132.8%323,1053.7%-2.3%
COMPARE_OP18,0440.2%18,0640.2%0.1%
CALL8,5800.1%8,5840.1%0.0%
SEND657,9285.6%657,9207.5%-0.0%
LOAD_GLOBAL5,0800.0%5,0800.1%0.0%
STORE_ATTR3,9800.0%3,9800.0%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK2,16049.8%2,16049.1%0.0%
CALL_METHOD_DESCRIPTOR_NOARGS1,42032.7%1,42032.3%0.0%
CALL_METHOD_DESCRIPTOR_O48011.1%48010.9%0.0%
LOAD_ATTR_INSTANCE_VALUE1403.2%1403.2%0.0%
LOAD_GLOBAL_BUILTIN801.8%801.8%0.0%
CALL_BUILTIN_O601.4%601.4%0.0%
CACHE00.0%00.0%
CHECK_EXC_MATCH00.0%00.0%
DELETE_SUBSCR00.0%
END_SEND00.0%
RESUME310.7%
RESUME_CHECK310.7%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Frames pushed20,015,52491.1%20,017,05991.1%0.0%
Calls to Python functions inlined19,358,10888.1%19,359,43488.1%0.0%
Calls via PyEval_EvalFrame (vector)2,293,65710.4%2,293,81010.4%0.0%
Calls via PyEval_EvalFrame (function vectorcall)2,293,65710.4%2,293,81010.4%0.0%
Calls to PyEval_EvalDefault2,622,95111.9%2,623,10011.9%0.0%
Calls via PyEval_EvalFrame (total)2,622,95111.9%2,623,10011.9%0.0%
Calls via PyEval_EvalFrame (generator)329,2941.5%329,2901.5%-0.0%
Calls via PyEval_EvalFrame (method)658,9083.0%658,9003.0%-0.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)3200.0%3200.0%0.0%
Calls via PyEval_EvalFrame (function ex)4000.0%4000.0%0.0%
Calls via PyEval_EvalFrame (api)1,0000.0%1,0000.0%0.0%
Frame objects created7400.0%7400.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Allocations to 4 kbytes4760.0%7650.0%60.7%
Interpreter immortal increfs75,133,04625.1%68,974,99523.1%-8.2%
Method cache dunder misses1,2091,2967.2%
Interpreter immortal decrefs67,645,40321.7%69,842,00721.9%3.2%
Interpreter mortal increfs170,043,24956.8%175,491,09158.7%3.2%
Mortal decrefs36,131,06011.6%37,115,05211.6%2.7%
Interpreter mortal decrefs183,847,06859.0%188,325,52459.0%2.4%
Method cache misses8,0947,923-2.1%
Method cache collisions7,2067,095-1.5%
Frees12,395,91112,400,6690.0%
Mortal increfs30,388,41110.1%30,397,95210.2%0.0%
Allocations12,060,73954.1%12,063,11154.1%0.0%
Allocations to 512 bytes11,419,67051.2%11,421,78351.2%0.0%
Immortal increfs24,067,3528.0%24,070,9978.1%0.0%
Method cache hits5,037,7565,038,4890.0%
Frees to freelist10,266,95310,268,2680.0%
Allocations from freelist10,250,68945.9%10,251,98445.9%0.0%
Immortal decrefs23,997,6167.7%24,000,4577.5%0.0%
Method cache dunder hits1,651,7041,651,8000.0%
Allocations over 4 kbytes640,5932.9%640,5632.9%-0.0%
Inline values330,614330,610-0.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-asyncio_tcp_ssl-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-asyncio_tcp_ssl-vs-base.md new file mode 100644 index 00000000..5efd6917 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-asyncio_tcp_ssl-vs-base.md @@ -0,0 +1,3819 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD7,457,2116,342-99.9%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS323,6145,066-98.4%
CALL_KW_NON_PY330,7206,135-98.1%
RETURN_GENERATOR659,44020,040-97.0%
COPY1,001,94231,754-96.8%
JUMP_FORWARD679,40842,158-93.8%
STORE_SUBSCR11,000880-92.0%
CONTAINS_OP_DICT11,1801,100-90.2%
LIST_APPEND2,560260-89.8%
STORE_FAST_LOAD_FAST1,260200-84.1%
FOR_ITER_RANGE1,322,257323,040-75.6%
FOR_ITER_LIST1,305,214327,462-74.9%
CALL_INTRINSIC_1981,197322,840-67.1%
LIST_EXTEND981,257322,900-67.1%
BINARY_OP2,004,008679,451-66.1%
NOP10,398,2333,645,180-64.9%
GET_AWAITABLE987,860348,336-64.7%
LOAD_FAST_AND_CLEAR680260-61.8%
TO_BOOL_STR1,840720-60.9%
BUILD_LIST1,626,517648,922-60.1%
FOR_ITER_TUPLE17,9808,600-52.2%
BINARY_SUBSCR_DICT19,8739,760-50.9%
TO_BOOL_LIST644,780323,222-49.9%
CALL_METHOD_DESCRIPTOR_NOARGS1,321,538662,686-49.9%
CALL_METHOD_DESCRIPTOR_FAST670,613342,908-48.9%
LOAD_ATTR13,283,6647,045,730-47.0%
FOR_ITER17,98010,216-43.2%
LOAD_ATTR_SLOT6,631,2183,804,039-42.6%
BINARY_OP_ADD_UNICODE1,060640-39.6%
SEND_GEN1,637,740998,092-39.1%
BINARY_SUBSCR_LIST_INT26,02416,154-37.9%
LOAD_ATTR_METHOD_WITH_VALUES17,781,43311,040,514-37.9%
PUSH_NULL2,667,4251,682,317-36.9%
UNPACK_SEQUENCE_TWO_TUPLE999,084655,584-34.4%
STORE_FAST_STORE_FAST999,684656,184-34.4%
TO_BOOL_INT2,968,0701,975,094-33.5%
GET_ITER984,380664,998-32.4%
LOAD_GLOBAL_MODULE6,611,2184,644,545-29.7%
LOAD_SPECIAL1,280920-28.1%
COMPARE_OP_INT4,588,1843,308,670-27.9%
LOAD_CONST14,199,85410,648,067-25.0%
BUILD_TUPLE1,335,8101,004,222-24.8%
POP_JUMP_IF_NOT_NONE1,330,4061,005,507-24.4%
LOAD_ATTR_INSTANCE_VALUE24,606,90718,618,096-24.3%
LOAD_FAST119,506,33593,302,633-21.9%
CALL_LEN2,932,6572,292,060-21.8%
CALL_ISINSTANCE36,74628,940-21.2%
CALL_PY_EXACT_ARGS12,269,0839,988,704-18.6%
STORE_FAST27,365,17222,483,662-17.8%
BINARY_SUBSCR_TUPLE_INT360300-16.7%
LOAD_GLOBAL_BUILTIN4,060,8433,388,462-16.6%
LOAD_ATTR_METHOD_NO_DICT15,555,65913,090,302-15.8%
POP_JUMP_IF_TRUE11,706,3459,902,735-15.4%
POP_JUMP_IF_FALSE27,748,59023,486,986-15.4%
LOAD_ATTR_MODULE2,331,5761,990,859-14.6%
COMPARE_OP_STR1,020880-13.7%
TO_BOOL7,462,6206,481,830-13.1%
TO_BOOL_BOOL20,506,54618,032,359-12.1%
UNARY_INVERT1,0171,13211.3%
RESUME_CHECK21,999,91119,542,664-11.2%
CALL_METHOD_DESCRIPTOR_O1,984,1781,806,352-9.0%
LOAD_FAST_LOAD_FAST7,339,4006,682,093-9.0%
POP_JUMP_IF_NONE7,405,1906,768,333-8.6%
POP_TOP13,508,79112,376,634-8.4%
BINARY_SUBSCR_STR_INT240220-8.3%
BINARY_OP_SUBTRACT_INT17,58016,211-7.8%
CALL_LIST_APPEND4,808,8374,484,842-6.7%
CONTAINS_OP_SET1,2401,180-4.8%
IS_OP3,1803,040-4.4%
EXTENDED_ARG17,36016,780-3.3%
SWAP359,810349,801-2.8%
COMPARE_OP_FLOAT12,94213,2942.7%
CALL_BUILTIN_FAST_WITH_KEYWORDS16,91716,512-2.4%
BINARY_SLICE662,237650,848-1.7%
BINARY_OP_ADD_INT677,377667,150-1.5%
COMPARE_OP989,213982,720-0.7%
CALL_BUILTIN_CLASS348,870347,312-0.4%
STORE_SUBSCR_DICT9,4339,420-0.1%
CALL_KW_PY9,6339,620-0.1%
STORE_ATTR_WITH_HINT690,794690,292-0.1%
STORE_ATTR_SLOT4,662,9344,660,532-0.1%
SEND659,440659,192-0.0%
INTERPRETER_EXIT2,306,1532,305,342-0.0%
CALL_FUNCTION_EX981,857981,546-0.0%
YIELD_VALUE1,308,3801,308,008-0.0%
TO_BOOL_NONE1,304,9401,304,572-0.0%
RETURN_CONST9,871,3589,868,648-0.0%
JUMP_BACKWARD_NO_INTERRUPT1,629,1401,628,768-0.0%
CALL_BOUND_METHOD_EXACT_ARGS329,573329,500-0.0%
RETURN_VALUE10,505,29310,503,220-0.0%
STORE_ATTR_INSTANCE_VALUE1,634,6401,634,332-0.0%
CALL_NON_PY_GENERAL8,416,3918,415,120-0.0%
LOAD_ATTR_WITH_HINT7,818,2227,817,212-0.0%
END_SEND987,860987,736-0.0%
COPY_FREE_VARS349,959349,920-0.0%
CALL_PY_GENERAL5,782,8095,782,248-0.0%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES5,873,8315,874,1760.0%
LOAD_DEREF1,652,0251,651,960-0.0%
CONTAINS_OP650,640650,620-0.0%
LOAD_FAST_CHECK5,120,3205,120,3200.0%
DELETE_SUBSCR328,780328,7800.0%
BINARY_OP_ADD_FLOAT322,200322,2000.0%
CHECK_EXC_MATCH322,000322,0000.0%
POP_EXCEPT322,000322,0000.0%
PUSH_EXC_INFO322,000322,0000.0%
MAKE_CELL321,980321,9800.0%
LOAD_ATTR_PROPERTY321,880321,8800.0%
MAKE_FUNCTION321,860321,8600.0%
SET_FUNCTION_ATTRIBUTE321,220321,2200.0%
BINARY_OP_MULTIPLY_INT321,020321,0200.0%
BUILD_SLICE320,720320,7200.0%
CALL22,06022,0600.0%
STORE_ATTR16,32016,3200.0%
LOAD_GLOBAL14,16014,1600.0%
MAP_ADD12,92012,9200.0%
BINARY_SUBSCR9,4409,4400.0%
RESUME5,6205,6200.0%
LOAD_SUPER_ATTR_METHOD3,3803,3800.0%
BUILD_MAP2,2802,2800.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK2,2202,2200.0%
CALL_BUILTIN_FAST1,8401,8400.0%
STORE_NAME1,4201,4200.0%
CALL_KW1,3401,3400.0%
LOAD_ATTR_CLASS1,2001,2000.0%
CALL_BUILTIN_O1,1401,1400.0%
CALL_TYPE_11,0401,0400.0%
LOAD_SUPER_ATTR9609600.0%
STORE_DEREF9409400.0%
UNPACK_SEQUENCE8408400.0%
LOAD_SUPER_ATTR_ATTR8208200.0%
CALL_ALLOC_AND_ENTER_INIT8008000.0%
EXIT_INIT_CHECK7807800.0%
DICT_UPDATE7607600.0%
LOAD_NAME7607600.0%
UNARY_NOT5205200.0%
TO_BOOL_ALWAYS_TRUE4604600.0%
DICT_MERGE4604600.0%
BUILD_SET4004000.0%
UNPACK_SEQUENCE_TUPLE2802800.0%
IMPORT_NAME2002000.0%
BINARY_OP_SUBTRACT_FLOAT2002000.0%
BINARY_OP_MULTIPLY_FLOAT1401400.0%
CALL_KW_BOUND_METHOD1401400.0%
CALL_STR_11201200.0%
LOAD_BUILD_CLASS1001000.0%
BINARY_SUBSCR_GETITEM1001000.0%
CALL_TUPLE_11001000.0%
RAISE_VARARGS80800.0%
RERAISE80800.0%
LOAD_LOCALS60600.0%
IMPORT_FROM60600.0%
CALL_BOUND_METHOD_GENERAL60600.0%
UNARY_NEGATIVE40400.0%
LOAD_ATTR_METHOD_LAZY_DICT40400.0%
STORE_SUBSCR_LIST_INT40400.0%
STORE_GLOBAL20200.0%
ENTER_EXECUTOR7,299,044
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,000,93759.8%676,98233.7%-66.2%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,339,57740.1%1,327,56166.1%-0.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure2,65186.3%2,04983.0%-22.7%
Success42013.7%42017.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
and int1,82668.9%1,35466.1%-25.8%
or62523.6%49524.2%-20.8%
floor divide1204.5%1205.9%0.0%
multiply different types602.3%602.9%0.0%
add different types200.8%201.0%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
662,237100.0%650,848100.0%-1.7%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
46,45782.9%26,39473.4%-43.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
8,98016.0%8,98025.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1400.2%1400.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success16034.8%16034.8%0.0%
Failure30065.2%30065.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
buffer int14046.7%14046.7%0.0%
tuple slice12040.0%12040.0%0.0%
list slice206.7%206.7%0.0%
buffer slice206.7%206.7%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
25,374,61999.9%20,636,84299.9%-18.7%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
2,6200.0%2,5800.0%-1.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
11,4800.0%11,4800.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success11,22099.6%11,22099.6%0.0%
Failure400.4%400.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
init not inline values100250.0%100250.0%0.0%
out of versions40100.0%40100.0%0.0%
init not python2050.0%2050.0%0.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
68050.7%68050.7%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
4,601,96682.3%3,322,66477.2%-27.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
985,97317.6%979,52022.8%-0.7%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1800.0%1800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure2,40074.1%2,36073.8%-1.7%
Success84025.9%84026.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
baseobject1,78074.2%1,74073.7%-2.2%
other2209.2%2209.3%0.0%
tuple1405.8%1405.9%0.0%
different types1205.0%1205.1%0.0%
float long803.3%803.4%0.0%
bool401.7%401.7%0.0%
list200.8%200.8%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
12,4201.9%2,2800.3%-81.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
649,88098.0%649,88099.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure60078.9%58078.4%-3.3%
Success16021.1%16021.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
str8013.3%6010.3%-25.0%
tuple52086.7%52089.7%0.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,645,45199.3%659,10298.5%-75.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
17,2400.6%9,4561.4%-45.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure40054.1%42055.3%5.0%
Success34045.9%34044.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other16040.0%14033.3%-12.5%
enumerate12030.0%12028.6%0.0%
dict items8020.0%8019.0%0.0%
set4010.0%409.5%0.0%
ascii string409.5%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
13,108,68713.9%6,969,82810.0%-46.8%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
70,383,86174.7%52,020,85074.7%-26.1%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
10,540,32511.2%10,539,68815.1%-0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success365,64097.9%266,91797.3%-27.0%
Failure7,8572.1%7,5032.7%-4.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
method1,36017.3%1,20016.0%-11.8%
overriding descriptor2,75735.1%2,60334.7%-5.6%
mutable class3,40043.3%3,36044.8%-1.2%
non object slot801.0%801.1%0.0%
class method obj400.5%400.5%0.0%
builtin class method200.3%200.3%0.0%
metaclass attribute200.3%200.3%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
10,671,58199.9%8,032,52799.8%-24.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
7,2200.1%7,2200.1%0.0%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
1000.0%1000.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
4800.0%4800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success6,940100.0%6,940100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_SUPER_ATTR + +
+ specialization stats for LOAD_SUPER_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4809.3%4809.3%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
4,20081.4%4,20081.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success480100.0%480100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### SEND + +
+ specialization stats for SEND family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,637,74071.3%998,09260.2%-39.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
658,26028.7%658,01239.7%-0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success46039.0%46039.0%0.0%
Failure72061.0%72061.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other720100.0%720100.0%0.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6,982,10899.7%6,978,89699.7%-0.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
10,8200.2%10,8200.2%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
6,2600.1%6,2600.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success3,92070.5%3,92070.5%0.0%
Failure1,64029.5%1,64029.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
not in dict1,08065.9%1,08065.9%0.0%
class attr simple32019.5%32019.5%0.0%
overridden804.9%804.9%0.0%
overriding descriptor804.9%804.9%0.0%
property402.4%402.4%0.0%
not in keys402.4%402.4%0.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
10,80052.8%6806.6%-93.7%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
9,47346.3%9,46091.5%-0.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success14070.0%14070.0%0.0%
Failure6030.0%6030.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
py simple4066.7%4066.7%0.0%
bytearray int2033.3%2033.3%0.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
25,426,05677.3%21,635,84776.9%-14.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
7,454,28022.7%6,474,05023.0%-13.1%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
2000.0%2000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure4,52054.2%3,96050.9%-12.4%
Success3,82045.8%3,82049.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
bytearray2605.8%1002.5%-61.5%
mapping2806.2%1203.0%-57.1%
sequence1,14025.2%98024.7%-14.0%
bytes2,50055.3%2,42061.1%-3.2%
dict1603.5%1604.0%0.0%
memory view1403.1%1403.5%0.0%
float200.4%200.5%0.0%
tuple200.4%200.5%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
999,36499.9%655,86499.9%-34.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4200.0%4200.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success420100.0%420100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
25,805,9225.0%17,226,6074.1%-33.2%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
186,345,34435.7%149,737,42735.8%-19.6%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
298,577,99957.3%241,037,80857.6%-19.3%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
10,550,2052.0%10,549,5472.5%-0.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
BINARY_OP2,000,9377.8%676,9824.0%-66.2%
LOAD_ATTR13,108,68751.2%6,969,82840.7%-46.8%
FOR_ITER17,2400.1%9,4560.1%-45.2%
TO_BOOL7,454,28029.1%6,474,05037.8%-13.1%
BINARY_SLICE662,2372.6%650,8483.8%-1.7%
COMPARE_OP985,9733.9%979,5205.7%-0.7%
SEND658,2602.6%658,0123.8%-0.0%
CONTAINS_OP649,8802.5%649,8803.8%0.0%
CALL11,4800.0%11,4800.1%0.0%
STORE_ATTR10,8200.0%10,8200.1%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
LOAD_ATTR_METHOD_WITH_VALUES4,662,18544.2%4,661,54844.2%-0.0%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES5,872,58055.7%5,872,58055.7%0.0%
STORE_ATTR_SLOT6,2600.1%6,2600.1%0.0%
LOAD_ATTR_SLOT3,0000.0%3,0000.0%0.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK2,1600.0%2,1600.0%0.0%
CALL_METHOD_DESCRIPTOR_NOARGS1,4600.0%1,4600.0%0.0%
CALL_METHOD_DESCRIPTOR_O5400.0%5400.0%0.0%
LOAD_ATTR_MODULE2600.0%2600.0%0.0%
LOAD_GLOBAL_MODULE2600.0%2600.0%0.0%
CALL_PY_EXACT_ARGS2200.0%
LOAD_GLOBAL_BUILTIN2200.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls via PyEval_EvalFrame (generator)329,6201.5%329,4961.5%-0.0%
Calls via PyEval_EvalFrame (method)659,2402.9%658,9922.9%-0.0%
Calls to PyEval_EvalDefault2,306,15310.2%2,305,34210.2%-0.0%
Calls via PyEval_EvalFrame (total)2,306,15310.2%2,305,34210.2%-0.0%
Calls via PyEval_EvalFrame (function vectorcall)1,976,3938.7%1,975,7068.7%-0.0%
Calls via PyEval_EvalFrame (vector)1,976,5338.7%1,975,8468.7%-0.0%
Frames pushed20,697,93191.3%20,693,60891.3%-0.0%
Calls to Python functions inlined20,358,81889.8%20,354,93489.8%-0.0%
Calls via PyEval_EvalFrame (legacy)400.0%400.0%0.0%
Calls via PyEval_EvalFrame (build class)1000.0%1000.0%0.0%
Calls via PyEval_EvalFrame (slot)5200.0%5200.0%0.0%
Calls via PyEval_EvalFrame (function ex)4400.0%4400.0%0.0%
Calls via PyEval_EvalFrame (api)1,5400.0%1,5400.0%0.0%
Frame objects created643,2402.8%643,2402.8%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache dunder misses34,0182,114-93.8%
Method cache collisions141,63481,136-42.7%
Method cache misses110,43981,872-25.9%
Interpreter immortal decrefs51,774,62712.4%58,748,47413.5%13.5%
Interpreter immortal increfs74,719,16317.9%69,829,33216.5%-6.5%
Interpreter mortal increfs213,133,33751.0%222,645,60452.7%4.5%
Interpreter mortal decrefs243,533,40558.2%252,392,09958.0%3.6%
Method cache dunder hits975,2081,006,6603.2%
Mortal decrefs86,006,35420.6%86,621,73119.9%0.7%
Method cache hits27,326,43027,254,010-0.3%
Immortal decrefs37,169,3998.9%37,071,9248.5%-0.3%
Immortal increfs46,302,45011.1%46,206,45610.9%-0.2%
Allocations to 4 kbytes323,2600.9%323,7820.9%0.2%
Mortal increfs83,972,48520.1%83,937,64019.9%-0.0%
Inline values332,060331,936-0.0%
Allocations to 512 bytes13,707,97738.3%13,704,03938.3%-0.0%
Frees to freelist15,707,38815,704,570-0.0%
Allocations from freelist15,699,91543.8%15,697,11043.8%-0.0%
Allocations20,121,79856.2%20,118,38456.2%-0.0%
Frees20,426,52320,424,610-0.0%
Allocations over 4 kbytes6,090,56117.0%6,090,56317.0%0.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)1600.0%1600.0%0.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-asyncio_websockets-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-asyncio_websockets-vs-base.md new file mode 100644 index 00000000..469a9a8e --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-asyncio_websockets-vs-base.md @@ -0,0 +1,3971 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD308,06115,080-95.1%
FOR_ITER_RANGE56,2405,740-89.8%
STORE_FAST_LOAD_FAST11,0801,340-87.9%
CONTAINS_OP_DICT212,22035,040-83.5%
FOR_ITER251,36350,382-80.0%
STORE_SUBSCR_DICT170,20035,040-79.4%
LIST_EXTEND24,7205,300-78.6%
CALL_INTRINSIC_124,8005,380-78.3%
FOR_ITER_TUPLE14,2803,200-77.6%
LOAD_ATTR_SLOT1,299,821319,561-75.4%
STORE_SUBSCR13,7403,620-73.7%
CONTAINS_OP_SET11,6803,740-68.0%
IS_OP437,020142,260-67.4%
CALL_LIST_APPEND23,4807,900-66.4%
BINARY_OP_ADD_INT30,24112,501-58.7%
POP_JUMP_IF_TRUE590,660244,760-58.6%
CALL_KW_NON_PY13,9806,340-54.6%
CALL_BUILTIN_FAST266,239124,639-53.2%
BUILD_LIST41,22119,681-52.3%
CALL_BUILTIN_O11,7806,100-48.2%
FOR_ITER_LIST46,24024,640-46.7%
DICT_MERGE67,66136,981-45.3%
TO_BOOL_STR5,0612,821-44.3%
BINARY_SUBSCR_DICT23,29913,099-43.8%
BUILD_MAP71,76041,080-42.8%
FORMAT_SIMPLE2,9021,662-42.7%
BUILD_STRING1,541921-40.2%
BINARY_SUBSCR_LIST_INT8,3405,240-37.2%
LOAD_FAST_AND_CLEAR2,2801,440-36.8%
TO_BOOL_BOOL851,779544,995-36.0%
TO_BOOL_LIST11,5007,460-35.1%
LOAD_GLOBAL_MODULE1,069,936696,036-34.9%
STORE_DEREF21,92014,280-34.9%
BINARY_OP_SUBTRACT_INT4,7203,080-34.7%
JUMP_FORWARD108,90172,061-33.8%
PUSH_NULL303,466202,146-33.4%
STORE_FAST993,586664,923-33.1%
POP_JUMP_IF_FALSE1,471,638987,914-32.9%
BINARY_OP_ADD_UNICODE2,6801,840-31.3%
NOP133,70491,824-31.3%
CALL_METHOD_DESCRIPTOR_NOARGS142,960100,396-29.8%
LOAD_FAST_LOAD_FAST1,088,804767,024-29.6%
CALL_PY_GENERAL28,77820,298-29.5%
LOAD_FAST4,981,7043,518,771-29.4%
POP_JUMP_IF_NOT_NONE139,001100,461-27.7%
COPY37,64127,461-27.0%
LIST_APPEND12,6409,280-26.6%
LOAD_ATTR_METHOD_NO_DICT260,283200,862-22.8%
LOAD_GLOBAL_BUILTIN745,616590,716-20.8%
LOAD_ATTR_METHOD_LAZY_DICT32,54026,100-19.8%
BINARY_OP225,645182,465-19.1%
LOAD_ATTR_INSTANCE_VALUE942,500763,560-19.0%
LOAD_DEREF88,54373,263-17.3%
CONTAINS_OP38,86032,240-17.0%
LOAD_ATTR_METHOD_WITH_VALUES451,520379,408-16.0%
BINARY_SLICE70,92259,602-16.0%
LOAD_ATTR_MODULE280,719237,019-15.6%
LOAD_CONST1,172,047993,527-15.2%
CALL_PY_EXACT_ARGS486,038417,098-14.2%
CALL_TYPE_159,78051,960-13.1%
CALL_METHOD_DESCRIPTOR_O61,86054,179-12.4%
BINARY_SUBSCR_TUPLE_INT1,000880-12.0%
TO_BOOL_NONE66,12058,360-11.7%
CALL_NON_PY_GENERAL255,679226,591-11.4%
CALL_METHOD_DESCRIPTOR_FAST25,58123,001-10.1%
CALL_KW_PY76,03968,399-10.0%
SWAP40,90236,942-9.7%
RESUME_CHECK873,665790,905-9.5%
UNPACK_SEQUENCE_TWO_TUPLE25,30023,380-7.6%
COMPARE_OP_INT242,996225,156-7.3%
CALL_BUILTIN_CLASS17,24216,002-7.2%
LOAD_ATTR430,400402,320-6.5%
STORE_FAST_STORE_FAST30,46128,541-6.3%
RETURN_CONST367,642345,242-6.1%
CALL_LEN190,796179,596-5.9%
COMPARE_OP_STR5,0604,820-4.7%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS26,40225,162-4.7%
RETURN_VALUE522,288499,008-4.5%
POP_TOP549,250529,998-3.5%
STORE_ATTR225,340217,620-3.4%
TO_BOOL75,50473,084-3.2%
EXTENDED_ARG19,00018,420-3.1%
GET_ITER72,52270,322-3.0%
LOAD_SPECIAL25,64224,922-2.8%
TO_BOOL_INT61,71959,999-2.8%
COMPARE_OP_FLOAT5,7005,580-2.1%
BINARY_SUBSCR_STR_INT1,5201,500-1.3%
CALL_ISINSTANCE46,14045,700-1.0%
CALL_BOUND_METHOD_EXACT_ARGS42,52042,260-0.6%
GET_AWAITABLE151,360150,620-0.5%
SEND_GEN154,200153,460-0.5%
RETURN_GENERATOR159,801159,061-0.5%
CALL_BUILTIN_FAST_WITH_KEYWORDS35,98035,820-0.4%
STORE_ATTR_INSTANCE_VALUE148,440147,980-0.3%
BUILD_TUPLE91,26391,003-0.3%
STORE_ATTR_SLOT180,460180,060-0.2%
POP_JUMP_IF_NONE152,500152,460-0.0%
INTERPRETER_EXIT169,882169,8820.0%
END_SEND151,040151,0400.0%
LOAD_ATTR_WITH_HINT102,980102,9800.0%
CALL_FUNCTION_EX93,82193,8210.0%
COMPARE_OP60,01860,0180.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK46,40046,4000.0%
CALL45,77345,7730.0%
DELETE_SUBSCR33,88033,8800.0%
BUILD_SLICE33,52033,5200.0%
LOAD_GLOBAL32,66932,6690.0%
MAKE_CELL31,66131,6610.0%
CALL_ALLOC_AND_ENTER_INIT19,54019,5400.0%
EXIT_INIT_CHECK19,50019,5000.0%
COPY_FREE_VARS18,76118,7610.0%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES18,00018,0000.0%
LOAD_FAST_CHECK16,82016,8200.0%
MAP_ADD16,04016,0400.0%
BINARY_SUBSCR15,25515,2550.0%
YIELD_VALUE12,98112,9810.0%
LOAD_ATTR_PROPERTY11,50011,5000.0%
RESUME10,66710,6670.0%
JUMP_BACKWARD_NO_INTERRUPT10,64010,6400.0%
UNPACK_SEQUENCE_TUPLE10,38010,3800.0%
SEND9,4009,4000.0%
UNARY_NOT9,0409,0400.0%
CALL_KW_BOUND_METHOD8,3408,3400.0%
MAKE_FUNCTION7,1417,1410.0%
LOAD_SUPER_ATTR_METHOD5,3005,3000.0%
STORE_NAME4,1204,1200.0%
BINARY_OP_ADD_FLOAT3,7403,7400.0%
SET_FUNCTION_ATTRIBUTE3,4613,4610.0%
CHECK_EXC_MATCH3,0613,0610.0%
POP_EXCEPT3,0613,0610.0%
PUSH_EXC_INFO3,0613,0610.0%
STORE_ATTR_WITH_HINT2,6202,6200.0%
TO_BOOL_ALWAYS_TRUE2,4802,4800.0%
CALL_KW2,4022,4020.0%
UNPACK_SEQUENCE2,2412,2410.0%
LOAD_ATTR_CLASS1,7001,7000.0%
LOAD_NAME1,5801,5800.0%
LOAD_SUPER_ATTR_ATTR1,4201,4200.0%
UNPACK_SEQUENCE_LIST1,1401,1400.0%
UNARY_INVERT1,1201,1200.0%
LOAD_SUPER_ATTR1,0001,0000.0%
CALL_TUPLE_19009000.0%
RERAISE8808800.0%
DICT_UPDATE7607600.0%
CALL_STR_17217210.0%
BINARY_SUBSCR_GETITEM7207200.0%
BUILD_SET5605600.0%
RAISE_VARARGS5205200.0%
IMPORT_NAME5005000.0%
BINARY_OP_MULTIPLY_INT4204200.0%
BINARY_OP_SUBTRACT_FLOAT4004000.0%
UNARY_NEGATIVE3603600.0%
CLEANUP_THROW3203200.0%
DELETE_FAST3203200.0%
LOAD_BUILD_CLASS3003000.0%
DELETE_ATTR2402400.0%
IMPORT_FROM2202200.0%
BINARY_OP_MULTIPLY_FLOAT2202200.0%
LOAD_LOCALS2002000.0%
STORE_GLOBAL1401400.0%
BINARY_OP_INPLACE_ADD_UNICODE1201200.0%
CONVERT_VALUE80800.0%
CALL_BOUND_METHOD_GENERAL60600.0%
STORE_SUBSCR_LIST_INT40400.0%
ENTER_EXECUTOR107,592
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
42,54115.9%22,32110.9%-47.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
220,24482.1%177,26486.6%-19.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure4,68186.7%4,48186.2%-4.3%
Success72013.3%72013.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
or1,06022.6%86019.2%-18.9%
and int1,86139.8%1,86141.5%0.0%
add other58012.4%58012.9%0.0%
floor divide2806.0%2806.2%0.0%
remainder2806.0%2806.2%0.0%
multiply different types2204.7%2204.9%0.0%
add different types1603.4%1603.6%0.0%
xor1603.4%1603.6%0.0%
lshift801.7%801.8%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
70,922100.0%59,602100.0%-16.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
34,71969.3%21,27958.0%-38.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
13,83527.6%13,83537.7%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1600.3%1600.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success56039.4%56039.4%0.0%
Failure86060.6%86060.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
buffer slice32037.2%32037.2%0.0%
tuple slice16018.6%16018.6%0.0%
buffer int16018.6%16018.6%0.0%
out of range10011.6%10011.6%0.0%
code complex parameters809.3%809.3%0.0%
list slice202.3%202.3%0.0%
string slice202.3%202.3%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,455,12294.1%1,147,87792.6%-21.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
23,2311.5%23,2311.9%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
45,3572.9%45,3573.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success24,50299.8%24,48299.8%-0.1%
Failure400.2%400.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
init not inline values180450.0%180450.0%0.0%
out of versions40100.0%40100.0%0.0%
init not simple40100.0%40100.0%0.0%
init not python2050.0%2050.0%0.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,20250.0%1,20250.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
253,43680.8%235,23679.6%-7.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
56,05817.9%56,05819.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
3200.1%3200.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success2,16054.5%2,16054.5%0.0%
Failure1,80045.5%1,80045.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other1,04057.8%1,04057.8%0.0%
different types20011.1%20011.1%0.0%
bool18010.0%18010.0%0.0%
bytes1608.9%1608.9%0.0%
float long1407.8%1407.8%0.0%
big int804.4%804.4%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
223,90085.2%38,78054.6%-82.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
37,34014.2%30,74043.3%-17.7%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,18077.6%1,16077.3%-1.7%
Success34022.4%34022.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple94079.7%92079.3%-2.1%
str18015.3%18015.5%0.0%
list605.1%605.2%0.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
248,92367.6%48,00257.2%-80.7%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
116,76031.7%33,58040.0%-71.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,34054.9%1,28053.8%-4.5%
Success1,10045.1%1,10046.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
dict values28020.9%22017.2%-21.4%
ascii string1209.0%14010.9%16.7%
reversed list16011.9%14010.9%-12.5%
set42031.3%42032.8%0.0%
dict items14010.4%14010.9%0.0%
enumerate1007.5%1007.8%0.0%
bytes604.5%604.7%0.0%
itertools403.0%403.1%0.0%
other201.5%201.6%0.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
3,306,80385.3%1,967,11078.4%-40.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
391,99910.1%364,01914.5%-7.1%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
141,1603.6%139,9805.6%-0.8%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure7,84019.3%7,74019.1%-1.3%
Success32,80180.7%32,78180.9%-0.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
method1,78022.7%1,72022.2%-3.4%
overriding descriptor3,26041.6%3,22041.6%-1.2%
mutable class1,36017.3%1,36017.6%0.0%
builtin class method4005.1%4005.2%0.0%
module attr not found3204.1%3204.1%0.0%
non object slot2803.6%2803.6%0.0%
class method obj2603.3%2603.4%0.0%
metaclass attribute200.3%200.3%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,811,47298.0%1,282,67297.2%-29.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
16,1480.9%16,1481.2%0.0%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
1800.0%1800.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
4,0800.2%4,0800.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success16,541100.0%16,541100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_SUPER_ATTR + +
+ specialization stats for LOAD_SUPER_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5006.5%5006.5%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6,72087.0%6,72087.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success500100.0%500100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### SEND + +
+ specialization stats for SEND family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
154,20094.3%153,46094.2%-0.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6,9204.2%6,9204.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,56062.9%1,56062.9%0.0%
Failure92037.1%92037.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other920100.0%920100.0%0.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
216,42038.9%208,78038.1%-3.5%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
322,32057.9%321,46058.6%-0.3%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
9,2001.7%9,2001.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure3,26036.5%3,18036.0%-2.5%
Success5,66063.5%5,66064.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
overriding descriptor2006.1%1203.8%-40.0%
not in dict1,28039.3%1,28040.3%0.0%
class attr simple96029.4%96030.2%0.0%
not in keys42012.9%42013.2%0.0%
overridden1604.9%1605.0%0.0%
method1203.7%1203.8%0.0%
not managed dict1203.7%1203.8%0.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
170,24092.5%35,08090.6%-79.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
13,0607.1%2,9407.6%-77.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success26038.2%26038.2%0.0%
Failure42061.8%42061.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
py simple40095.2%40095.2%0.0%
bytearray int204.8%204.8%0.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
996,05992.9%673,49590.2%-32.4%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
3400.0%3600.0%5.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
66,5646.2%64,1648.6%-3.6%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,46016.3%1,44016.1%-1.4%
Success7,48083.7%7,48083.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
sequence38026.0%36025.0%-5.3%
bytes46031.5%46031.9%0.0%
dict20013.7%20013.9%0.0%
memory view1409.6%1409.7%0.0%
tuple1006.8%1006.9%0.0%
mapping805.5%805.6%0.0%
set805.5%805.6%0.0%
float201.4%201.4%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
36,82094.3%34,90094.0%-5.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,1012.8%1,1013.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,140100.0%1,140100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
10,147,37337.8%7,054,88336.4%-30.5%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
14,980,19055.8%10,913,20956.4%-27.1%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
1,500,5325.6%1,190,0916.1%-20.7%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
200,6370.7%199,4771.0%-0.6%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
FOR_ITER248,92318.0%48,0024.5%-80.7%
BINARY_OP220,24415.9%177,26416.5%-19.5%
CONTAINS_OP37,3402.7%30,7402.9%-17.7%
BINARY_SLICE70,9225.1%59,6025.5%-16.0%
LOAD_ATTR391,99928.3%364,01933.9%-7.1%
TO_BOOL66,5644.8%64,1646.0%-3.6%
STORE_ATTR216,42015.6%208,78019.4%-3.5%
COMPARE_OP56,0584.0%56,0585.2%0.0%
CALL23,2311.7%23,2312.2%0.0%
LOAD_GLOBAL16,1481.2%16,1481.5%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
LOAD_ATTR_SLOT4,9402.5%4,0002.0%-19.0%
LOAD_ATTR_METHOD_WITH_VALUES95,64047.7%95,40047.8%-0.3%
CALL_BUILTIN_FAST_WITH_KEYWORDS33,27716.6%33,27716.7%0.0%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES16,7008.3%16,7008.4%0.0%
LOAD_ATTR_WITH_HINT12,1206.0%12,1206.1%0.0%
CALL_METHOD_DESCRIPTOR_NOARGS10,0405.0%10,0405.0%0.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK9,5004.7%9,5004.8%0.0%
STORE_ATTR_SLOT8,4204.2%8,4204.2%0.0%
LOAD_GLOBAL_BUILTIN2,9001.4%2,9001.5%0.0%
LOAD_GLOBAL_MODULE1,1800.6%1,1800.6%0.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault170,44216.3%170,44216.3%0.0%
Calls to Python functions inlined874,01183.7%874,01183.7%0.0%
Calls via PyEval_EvalFrame (total)170,44216.3%170,44216.3%0.0%
Calls via PyEval_EvalFrame (vector)153,58014.7%153,58014.7%0.0%
Calls via PyEval_EvalFrame (generator)16,8621.6%16,8621.6%0.0%
Calls via PyEval_EvalFrame (legacy)800.0%800.0%0.0%
Calls via PyEval_EvalFrame (function vectorcall)153,20014.7%153,20014.7%0.0%
Calls via PyEval_EvalFrame (build class)3000.0%3000.0%0.0%
Calls via PyEval_EvalFrame (slot)5,7400.5%5,7400.5%0.0%
Calls via PyEval_EvalFrame (function ex)33,4403.2%33,4403.2%0.0%
Calls via PyEval_EvalFrame (api)1,9200.2%1,9200.2%0.0%
Calls via PyEval_EvalFrame (method)33,4403.2%33,4403.2%0.0%
Frame objects created4,0220.4%4,0220.4%0.0%
Frames pushed891,33185.3%891,33185.3%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache dunder misses7,0476,576-6.7%
Method cache collisions38,75236,567-5.6%
Method cache misses35,44633,698-4.9%
Interpreter immortal increfs4,698,97718.7%4,552,63818.1%-3.1%
Interpreter immortal decrefs3,873,26815.0%3,975,34115.2%2.6%
Interpreter mortal increfs11,873,80247.3%12,082,47448.0%1.8%
Interpreter mortal decrefs13,640,12152.9%13,836,21353.0%1.4%
Allocations to 4 kbytes132,8835.6%133,5235.6%0.5%
Mortal decrefs3,972,89615.4%3,985,95315.3%0.3%
Method cache dunder hits327,478326,989-0.1%
Method cache hits1,049,3871,050,7150.1%
Immortal decrefs4,316,12616.7%4,311,46016.5%-0.1%
Immortal increfs4,757,31118.9%4,752,38918.9%-0.1%
Allocations1,513,42963.5%1,514,11163.6%0.0%
Allocations over 4 kbytes57,9862.4%58,0062.4%0.0%
Mortal increfs3,778,06715.0%3,778,61615.0%0.0%
Allocations from freelist868,28336.5%868,34336.4%0.0%
Frees to freelist872,767872,8270.0%
Allocations to 512 bytes1,322,56055.5%1,322,58255.5%0.0%
Frees1,464,0171,463,993-0.0%
Inline values65,92065,9200.0%
Materialize dict (on request)200.0%200.0%0.0%
Materialize dict (new key)1600.2%1600.2%0.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1207,720374,092207,720365,346
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
06060 / 0 !!
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
06060 / 0 !!
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-bpe_tokeniser-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-bpe_tokeniser-vs-base.md new file mode 100644 index 00000000..7c278a0b --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-bpe_tokeniser-vs-base.md @@ -0,0 +1,3285 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
STORE_SUBSCR442,355,7201,320-100.0%
COPY884,491,2602,640-100.0%
JUMP_BACKWARD1,692,602,9608,660-100.0%
FOR_ITER854,245,38010,860-100.0%
COMPARE_OP441,372,1406,860-100.0%
BINARY_OP_SUBTRACT_INT1,235,069,18032,520-100.0%
CALL_LEN1,235,194,96040,440-100.0%
FOR_ITER_LIST796,312,84026,780-100.0%
COMPARE_OP_INT1,237,349,26046,860-100.0%
SWAP888,109,60044,540-100.0%
BINARY_SUBSCR_LIST_INT1,721,677,30099,800-100.0%
POP_JUMP_IF_FALSE1,676,478,240116,060-100.0%
LOAD_GLOBAL_BUILTIN1,641,618,400123,840-100.0%
GET_ITER400,766,00032,680-100.0%
LOAD_FAST_LOAD_FAST1,725,739,860146,740-100.0%
LOAD_CONST3,780,462,020444,340-100.0%
BUILD_LIST405,200,72050,020-100.0%
BUILD_TUPLE441,388,76074,520-100.0%
CALL_NON_PY_GENERAL404,227,32070,140-100.0%
BINARY_OP_ADD_INT1,328,114,540302,240-100.0%
CALL_LIST_APPEND1,234,381,260400,140-100.0%
STORE_FAST2,497,912,880951,320-100.0%
LOAD_ATTR_METHOD_NO_DICT1,242,524,720924,320-99.9%
CALL_METHOD_DESCRIPTOR_FAST6,591,7205,380-99.9%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS1,034,0601,120-99.9%
STORE_FAST_STORE_FAST6,676,1208,040-99.9%
UNPACK_SEQUENCE_TWO_TUPLE6,676,2808,200-99.9%
BINARY_SUBSCR_TUPLE_INT13,307,24022,260-99.8%
CALL_BUILTIN_CLASS2,187,6005,860-99.7%
LIST_APPEND6,340,32024,420-99.6%
NOP2,192,1608,900-99.6%
MAP_ADD81,920380-99.5%
POP_JUMP_IF_NOT_NONE10,450,02050,600-99.5%
BINARY_OP11,669,22067,160-99.4%
STORE_DEREF61,440380-99.4%
CALL_PY_EXACT_ARGS521,3403,800-99.3%
POP_JUMP_IF_TRUE2,227,70020,100-99.1%
BINARY_SLICE3,340,40036,040-98.9%
LOAD_FAST_AND_CLEAR1,551,20018,800-98.8%
STORE_FAST_LOAD_FAST1,347,04018,720-98.6%
LOAD_ATTR_INSTANCE_VALUE530,3408,700-98.4%
POP_JUMP_IF_NONE3,950,76068,580-98.3%
BINARY_SUBSCR_DICT828,02018,300-97.8%
LOAD_FAST6,424,444,900148,016,860-97.7%
LOAD_GLOBAL_MODULE598,40017,720-97.0%
LOAD_ATTR_MODULE63,0201,880-97.0%
EXTENDED_ARG128,7404,020-96.9%
FOR_ITER_RANGE23,640840-96.4%
JUMP_FORWARD518,18018,720-96.4%
STORE_SUBSCR_DICT81,9205,420-93.4%
MAKE_FUNCTION61,5205,120-91.7%
SET_FUNCTION_ATTRIBUTE61,5205,120-91.7%
CALL_KW_NON_PY61,5405,140-91.6%
BINARY_SUBSCR1,385,992,200145,277,640-89.5%
LOAD_DEREF587,596,000145,295,220-75.3%
CALL_ISINSTANCE3,9801,160-70.9%
TO_BOOL_STR3,5601,440-59.6%
TO_BOOL_BOOL5,7402,740-52.3%
CONTAINS_OP1,860900-51.6%
PUSH_NULL133,00070,680-46.9%
COMPARE_OP_STR6,6603,820-42.6%
CONTAINS_OP_DICT200120-40.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS2,0801,400-32.7%
LOAD_ATTR_METHOD_WITH_VALUES2,2801,580-30.7%
BINARY_SUBSCR_STR_INT2,3601,640-30.5%
BINARY_OP_INPLACE_ADD_UNICODE280200-28.6%
STORE_SUBSCR_LIST_INT800580-27.5%
CONTAINS_OP_SET2,3201,760-24.1%
STORE_ATTR_INSTANCE_VALUE5,1403,960-23.0%
IS_OP6,5005,140-20.9%
BINARY_SUBSCR_GETITEM1,6601,320-20.5%
FOR_ITER_TUPLE1,080860-20.4%
CALL_BOUND_METHOD_EXACT_ARGS2,5202,040-19.0%
BINARY_OP_ADD_UNICODE440360-18.2%
POP_TOP648,960714,68010.1%
TO_BOOL_LIST800720-10.0%
TO_BOOL_INT2,6202,360-9.9%
UNARY_NOT500460-8.0%
CALL_BUILTIN_O4,7004,460-5.1%
CALL_ALLOC_AND_ENTER_INIT480460-4.2%
LOAD_ATTR_SLOT1,0401,020-1.9%
RESUME_CHECK291,109,000290,588,640-0.2%
LOAD_ATTR66,78066,720-0.1%
RETURN_VALUE145,754,220145,753,760-0.0%
RETURN_CONST145,355,080145,354,640-0.0%
INTERPRETER_EXIT290,581,600290,581,6000.0%
COPY_FREE_VARS145,350,480145,350,4800.0%
CALL_METHOD_DESCRIPTOR_O517,280517,2800.0%
TO_BOOL62,98062,9800.0%
CALL_FUNCTION_EX61,92061,9200.0%
BUILD_MAP61,64061,6400.0%
DICT_MERGE61,44061,4400.0%
LOAD_SUPER_ATTR_METHOD61,42061,4200.0%
CALL2,6602,6600.0%
LOAD_GLOBAL1,9001,9000.0%
STORE_ATTR_SLOT1,0201,0200.0%
LOAD_ATTR_CLASS9409400.0%
RESUME6406400.0%
LOAD_ATTR_PROPERTY6006000.0%
STORE_ATTR5205200.0%
EXIT_INIT_CHECK4804800.0%
TO_BOOL_NONE4204200.0%
CALL_TYPE_14204200.0%
YIELD_VALUE4004000.0%
CALL_PY_GENERAL3403400.0%
LOAD_ATTR_NONDESCRIPTOR_NO_DICT3403400.0%
UNPACK_SEQUENCE_TUPLE3003000.0%
CHECK_EXC_MATCH2802800.0%
POP_EXCEPT2802800.0%
PUSH_EXC_INFO2802800.0%
BINARY_OP_MULTIPLY_INT2202200.0%
CALL_KW2002000.0%
UNPACK_SEQUENCE1801800.0%
LOAD_SPECIAL1601600.0%
MAKE_CELL1601600.0%
CALL_METHOD_DESCRIPTOR_NOARGS1401400.0%
CALL_BUILTIN_FAST1201200.0%
CALL_KW_PY1201200.0%
RETURN_GENERATOR80800.0%
CALL_INTRINSIC_180800.0%
LIST_EXTEND80800.0%
LOAD_FAST_CHECK80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
CALL_STR_160600.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK60600.0%
LOAD_SUPER_ATTR40400.0%
CALL_TUPLE_120200.0%
ENTER_EXECUTOR1,398,200
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,563,184,72099.5%335,60083.3%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
11,665,0800.5%66,08016.4%-99.4%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure3,92094.7%86079.6%-78.1%
Success2205.3%22020.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
add other3,84098.0%78090.7%-79.7%
and int401.0%404.7%0.0%
true divide different types401.0%404.7%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3,340,400100.0%36,040100.0%-98.9%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,735,816,12055.6%142,8600.1%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,385,652,30044.4%145,241,08099.9%-89.5%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
4600.0%4600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure339,54099.9%36,20099.0%-89.3%
Success3800.1%3801.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
list slice195,70057.6%4601.3%-99.8%
other143,84042.4%35,74098.7%-75.2%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,480,445,160100.0%986,24099.7%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,3200.0%1,3200.1%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1000.0%1000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,440100.0%1,440100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
10050.0%10050.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
441,263,94026.3%6,46011.2%-100.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,237,355,86073.7%50,62088.0%-100.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
600.0%600.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure108,00099.8%20050.0%-99.8%
Success2000.2%20050.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple107,960100.0%16080.0%-99.9%
other400.0%4020.0%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,84042.0%88031.7%-52.2%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,52057.5%1,88067.6%-25.4%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success00.0%00.0%
Failure20100.0%20100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
str20100.0%20100.0%0.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
854,035,58051.7%10,18025.9%-100.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
796,336,70048.2%28,48072.4%-100.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
8600.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure209,60099.9%46067.6%-99.8%
Success2200.1%22032.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
zip205,12097.9%8017.4%-100.0%
enumerate2,3401.1%14030.4%-94.0%
bytes1,8400.9%16034.8%-91.3%
seq iter800.0%204.3%-75.0%
dict items2200.1%6013.0%-72.7%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,243,123,140100.0%939,24093.3%-99.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
65,0600.0%65,0006.5%-0.1%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
2000.0%2000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,34077.9%1,34077.9%0.0%
Failure38022.1%38022.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
method24063.2%24063.2%0.0%
non overriding descriptor205.3%205.3%0.0%
not managed dict205.3%205.3%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,642,216,640100.0%141,40098.6%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
9400.0%9400.7%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1600.0%1600.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success960100.0%960100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_SUPER_ATTR + +
+ specialization stats for LOAD_SUPER_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.0%200.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
61,42099.9%61,42099.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6,16092.2%4,98090.5%-19.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2603.9%2604.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success260100.0%260100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
442,247,480100.0%1,18016.1%-100.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
82,7200.0%6,00082.0%-92.7%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure108,200100.0%10071.4%-99.9%
Success400.0%4028.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other108,180100.0%8080.0%-99.9%
bytearray int200.0%2020.0%0.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
12,98017.1%7,52010.6%-42.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
62,46082.1%62,46088.4%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1600.2%1600.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success24046.2%24046.2%0.0%
Failure28053.8%28053.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
dict20071.4%20071.4%0.0%
mapping6021.4%6021.4%0.0%
tuple207.1%207.1%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6,676,580100.0%8,50097.9%-99.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
800.0%800.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success100100.0%100100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
12,400,716,50032.9%293,377,08020.0%-97.6%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
22,168,860,18058.8%1,024,853,14070.0%-95.4%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
3,139,112,1808.3%145,535,9809.9%-95.4%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
2,0200.0%1,1400.0%-43.6%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
STORE_SUBSCR442,247,48014.1%1,1800.0%-100.0%
FOR_ITER854,035,58027.2%10,1800.0%-100.0%
COMPARE_OP441,263,94014.1%6,4600.0%-100.0%
BINARY_OP11,665,0800.4%66,0800.0%-99.4%
BINARY_SLICE3,340,4000.1%36,0400.0%-98.9%
BINARY_SUBSCR1,385,652,30044.2%145,241,08099.8%-89.5%
LOAD_ATTR65,0600.0%65,0000.0%-0.1%
TO_BOOL62,4600.0%62,4600.0%0.0%
CONTAINS_OP1,8400.0%
CALL1,3200.0%1,3200.0%0.0%
LOAD_GLOBAL9400.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
FOR_ITER_LIST86042.2%
BINARY_SUBSCR_LIST_INT44021.6%44038.6%0.0%
LOAD_ATTR_SLOT2009.8%20017.5%0.0%
LOAD_GLOBAL_BUILTIN1607.8%16014.0%0.0%
TO_BOOL_NONE803.9%807.0%0.0%
CALL_METHOD_DESCRIPTOR_NOARGS602.9%605.3%0.0%
COMPARE_OP_STR602.9%605.3%0.0%
TO_BOOL_LIST602.9%605.3%0.0%
CALL_BUILTIN_FAST402.0%403.5%0.0%
RESUME201.0%
BINARY_SUBSCR_STR_INT201.8%
TO_BOOL_STR201.8%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault290,582,02099.8%290,582,02099.8%0.0%
Calls to Python functions inlined527,7000.2%527,7000.2%0.0%
Calls via PyEval_EvalFrame (total)290,582,02099.8%290,582,02099.8%0.0%
Calls via PyEval_EvalFrame (vector)290,581,54099.8%290,581,54099.8%0.0%
Calls via PyEval_EvalFrame (generator)4800.0%4800.0%0.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)290,581,54099.8%290,581,54099.8%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)2,6400.0%2,6400.0%0.0%
Calls via PyEval_EvalFrame (function ex)2400.0%2400.0%0.0%
Calls via PyEval_EvalFrame (api)145,227,68049.9%145,227,68049.9%0.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created1,1200.0%1,1200.0%0.0%
Frames pushed291,109,720100.0%291,109,720100.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Interpreter immortal increfs7,626,207,76021.6%4,237,865,56012.5%-44.4%
Interpreter mortal increfs14,241,304,80040.3%16,199,743,62047.7%13.8%
Interpreter mortal decrefs15,701,550,52035.0%17,659,349,14037.7%12.5%
Method cache misses1,0521,1075.2%
Allocations to 4 kbytes185,0200.0%188,0200.0%1.6%
Method cache collisions1,0151,004-1.1%
Method cache dunder misses3283310.9%
Method cache hits70,60870,553-0.1%
Interpreter immortal decrefs11,494,758,20025.6%11,498,900,66024.5%0.0%
Method cache dunder hits1,180,280,0521,180,063,849-0.0%
Mortal decrefs11,517,229,78925.6%11,517,712,47124.6%0.0%
Mortal increfs7,543,272,16421.3%7,543,080,05922.2%-0.0%
Allocations from freelist3,655,534,04063.0%3,655,559,00063.0%0.0%
Frees to freelist3,655,574,0003,655,598,9600.0%
Frees2,543,642,3042,543,657,0560.0%
Allocations2,144,128,80037.0%2,144,137,44037.0%0.0%
Immortal increfs5,964,711,79616.9%5,964,729,70017.6%0.0%
Allocations to 512 bytes2,143,640,10037.0%2,143,645,74037.0%0.0%
Immortal decrefs6,206,397,09113.8%6,206,406,67113.2%0.0%
Allocations over 4 kbytes303,6800.0%303,6800.0%0.0%
Inline values62,08062,0800.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1184,5803,8403,930,921,180184,5803,8403,931,689,500
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-chaos-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-chaos-vs-base.md new file mode 100644 index 00000000..43766053 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-chaos-vs-base.md @@ -0,0 +1,2580 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD24,179,3601,840-100.0%
CALL_PY_GENERAL799,980440-99.9%
POP_JUMP_IF_NOT_NONE12,000,00087,860-99.3%
STORE_ATTR_INSTANCE_VALUE35,210,4801,610,480-95.4%
CALL_METHOD_DESCRIPTOR_NOARGS1,599,98087,380-94.5%
LOAD_ATTR_METHOD_NO_DICT1,599,98087,380-94.5%
IS_OP1,600,00087,400-94.5%
CALL_BOUND_METHOD_GENERAL1,600,08087,480-94.5%
LOAD_ATTR1,603,42090,460-94.4%
BINARY_OP_MULTIPLY_FLOAT61,599,9003,999,900-93.5%
FOR_ITER_RANGE33,774,8803,390,200-90.0%
BINARY_OP_ADD_INT64,725,8606,695,240-89.7%
BINARY_SUBSCR15,5601,880-87.9%
CALL_ALLOC_AND_ENTER_INIT11,200,1001,600,100-85.7%
BINARY_OP_SUBTRACT_INT92,015,26015,201,640-83.5%
LOAD_FAST_LOAD_FAST176,049,76029,372,140-83.3%
LIST_APPEND6,440,9601,600,460-75.2%
COMPARE_OP_INT8,390,0202,153,120-74.3%
BINARY_SUBSCR_LIST_INT66,636,96017,180,600-74.2%
LOAD_GLOBAL_MODULE19,200,2205,062,420-73.6%
STORE_FAST116,773,20031,087,960-73.4%
BINARY_OP_ADD_FLOAT40,000,08011,200,080-72.0%
BINARY_OP59,261,00019,211,280-67.6%
LOAD_FAST330,503,680107,618,120-67.4%
GET_ITER10,400,4003,388,980-67.4%
RESUME_CHECK38,400,34012,976,060-66.2%
LOAD_ATTR_INSTANCE_VALUE172,276,34066,984,540-61.1%
CALL_BUILTIN_CLASS12,800,2604,989,300-61.0%
LOAD_CONST86,798,48034,681,340-60.0%
CALL_BUILTIN_O6,404,7202,613,000-59.2%
LOAD_ATTR_METHOD_WITH_VALUES21,599,8408,888,160-58.9%
CALL_PY_EXACT_ARGS20,799,8608,887,720-57.3%
PUSH_NULL8,005,4404,213,720-47.4%
LOAD_GLOBAL_BUILTIN20,017,00011,581,000-42.1%
POP_JUMP_IF_FALSE19,590,48011,842,240-39.6%
LOAD_ATTR_MODULE4,000,1802,487,580-37.8%
BINARY_OP_SUBTRACT_FLOAT4,799,9403,200,860-33.3%
POP_JUMP_IF_TRUE7,852,3205,600,640-28.7%
POP_TOP3,185,6802,591,940-18.6%
COMPARE_OP13,456,36011,204,120-16.7%
CALL_LEN6,414,8405,789,800-9.7%
BUILD_TUPLE4,800,3204,580,280-4.6%
RETURN_VALUE37,600,18035,937,260-4.4%
SWAP5,585,4405,365,400-3.9%
BUILD_LIST1,641,1201,600,620-2.5%
RETURN_CONST12,000,48012,000,4800.0%
EXIT_INIT_CHECK11,200,10011,200,1000.0%
STORE_SUBSCR_LIST_INT10,399,98010,399,9800.0%
BINARY_SUBSCR_TUPLE_INT10,399,90010,399,9000.0%
INTERPRETER_EXIT4,000,2204,000,2200.0%
COMPARE_OP_FLOAT3,199,9203,199,9200.0%
CALL_NON_PY_GENERAL1,600,2801,600,2800.0%
LOAD_FAST_AND_CLEAR1,600,1601,600,1600.0%
COPY1,600,0001,600,0000.0%
CALL_ISINSTANCE800,300800,3000.0%
TO_BOOL_BOOL800,300800,3000.0%
UNARY_NEGATIVE800,000800,0000.0%
JUMP_FORWARD800,000800,0000.0%
STORE_FAST_STORE_FAST800,000800,0000.0%
UNPACK_SEQUENCE_TWO_TUPLE799,980799,9800.0%
CALL1,5201,5200.0%
LOAD_GLOBAL1,1601,1600.0%
LOAD_DEREF3203200.0%
COPY_FREE_VARS2402400.0%
RESUME2202200.0%
STORE_ATTR1801800.0%
CALL_METHOD_DESCRIPTOR_FAST1601600.0%
FOR_ITER1601600.0%
CALL_TYPE_11601600.0%
LOAD_SUPER_ATTR_METHOD1601600.0%
TO_BOOL_NONE1401400.0%
TO_BOOL1201200.0%
NOP80800.0%
CALL_FUNCTION_EX80800.0%
STORE_SUBSCR40400.0%
UNPACK_SEQUENCE40400.0%
LOAD_SUPER_ATTR20200.0%
ENTER_EXECUTOR14,128,700
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
263,141,04081.6%40,297,72067.7%-84.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
59,241,92018.4%19,202,34032.3%-67.6%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure18,44096.6%8,30092.8%-55.0%
Success6403.4%6407.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
true divide different types4,76025.8%801.0%-98.3%
true divide float2,28012.4%1,64019.8%-28.1%
multiply different types2,86015.5%2,72032.8%-4.9%
subtract different types4,68025.4%
power2,34012.7%2,34028.2%0.0%
add different types3802.1%3804.6%0.0%
add other3802.1%3804.6%0.0%
subtract other3802.1%3804.6%0.0%
true divide other3802.1%3804.6%0.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
15,1400.0%1,5200.0%-90.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
77,036,860100.0%27,580,500100.0%-64.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure16038.1%10027.8%-37.5%
Success26061.9%26072.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
out of range160100.0%100100.0%-37.5%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
60,020,220100.0%24,767,760100.0%-58.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
7200.0%7200.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1600.0%1600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success800100.0%800100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
11,589,94046.3%5,353,04032.3%-53.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
13,452,38053.7%11,200,70067.6%-16.7%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure3,72093.5%3,16092.4%-15.1%
Success2606.5%2607.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
float long3,720100.0%3,160100.0%-15.1%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
33,774,880100.0%3,390,200100.0%-90.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
800.0%800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success80100.0%80100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,601,4200.8%88,8200.1%-94.5%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
199,476,34099.2%78,447,66099.9%-60.7%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure58029.0%22013.4%-62.1%
Success1,42071.0%1,42086.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
method580100.0%220100.0%-62.1%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
39,217,220100.0%16,643,420100.0%-57.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4600.0%4600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success700100.0%700100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_SUPER_ATTR + +
+ specialization stats for LOAD_SUPER_ATTR family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
16088.9%16088.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
35,210,480100.0%1,610,480100.0%-95.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
800.0%800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success100100.0%100100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.0%200.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
10,399,980100.0%10,399,980100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.0%400.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
800,440100.0%800,440100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success80100.0%80100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.0%200.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
799,980100.0%799,980100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
1600.0%3200.0%100.0%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
773,868,22044.6%224,755,44038.6%-71.0%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
885,808,72051.1%326,588,80056.1%-63.1%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
74,339,5804.3%30,510,9805.2%-59.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
LOAD_ATTR1,601,4202.2%88,8200.3%-94.5%
BINARY_SUBSCR15,1400.0%1,5200.0%-90.0%
BINARY_OP59,241,92079.7%19,202,34063.0%-67.6%
COMPARE_OP13,452,38018.1%11,200,70036.7%-16.7%
CALL7200.0%7200.0%0.0%
LOAD_GLOBAL4600.0%4600.0%0.0%
FOR_ITER800.0%800.0%0.0%
STORE_ATTR800.0%800.0%0.0%
TO_BOOL400.0%400.0%0.0%
STORE_SUBSCR200.0%200.0%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
CALL_METHOD_DESCRIPTOR_FAST160100.0%16033.3%0.0%
CACHE00.0%00.0%
EXIT_INIT_CHECK00.0%00.0%
GET_ITER00.0%00.0%
INTERPRETER_EXIT00.0%00.0%
NOP00.0%00.0%
POP_TOP00.0%00.0%
PUSH_NULL00.0%00.0%
RETURN_VALUE00.0%
UNARY_NEGATIVE00.0%
RESUME16033.3%
RESUME_CHECK16033.3%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault4,000,22010.4%4,000,22010.4%0.0%
Calls to Python functions inlined34,400,34089.6%34,400,34089.6%0.0%
Calls via PyEval_EvalFrame (total)4,000,22010.4%4,000,22010.4%0.0%
Calls via PyEval_EvalFrame (vector)4,000,22010.4%4,000,22010.4%0.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)4,000,22010.4%4,000,22010.4%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)2,400,0006.2%2,400,0006.2%0.0%
Calls via PyEval_EvalFrame (function ex)800.0%800.0%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed49,600,660129.2%49,600,660129.2%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Interpreter immortal increfs442,295,00035.1%380,854,30030.8%-13.9%
Method cache collisions17919810.6%
Method cache misses198183-7.6%
Interpreter mortal decrefs703,645,06042.5%742,227,00043.5%5.5%
Interpreter mortal increfs749,241,18059.5%787,823,04063.7%5.1%
Interpreter immortal decrefs639,881,76038.7%654,010,54038.3%2.2%
Allocations to 4 kbytes40,9600.0%41,1800.0%0.5%
Method cache hits1,603,2621,602,917-0.0%
Mortal increfs20,004,9351.6%20,009,0831.6%0.0%
Frees37,670,91037,673,2260.0%
Mortal decrefs236,844,47214.3%236,850,89613.9%0.0%
Immortal increfs47,264,4813.8%47,265,5033.8%0.0%
Allocations36,072,20021.1%36,072,78021.1%0.0%
Allocations to 512 bytes36,031,24021.0%36,031,58021.0%0.0%
Immortal decrefs73,870,7244.5%73,871,1704.3%0.0%
Allocations from freelist135,253,52078.9%135,253,82078.9%0.0%
Frees to freelist135,254,900135,255,2000.0%
Allocations over 4 kbytes00.0%200.0%20 / 0 !!
Inline values11,200,16011,200,1600.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
Method cache dunder hits4,000,7004,000,7000.0%
Method cache dunder misses60600.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-comprehensions-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-comprehensions-vs-base.md new file mode 100644 index 00000000..7eaa0aae --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-comprehensions-vs-base.md @@ -0,0 +1,2267 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
CALL_METHOD_DESCRIPTOR_FAST70,778,8601,760-100.0%
JUMP_BACKWARD157,956,3204,960-100.0%
LOAD_ATTR_METHOD_NO_DICT71,436,1004,900-100.0%
MAP_ADD23,592,9602,900-100.0%
CALL_BUILTIN_O11,796,4601,540-100.0%
COPY15,728,6402,180-100.0%
BINARY_SUBSCR_DICT35,389,8605,100-100.0%
COMPARE_OP15,732,8002,400-100.0%
MAKE_FUNCTION11,796,7201,800-100.0%
RETURN_GENERATOR11,796,7201,800-100.0%
BUILD_TUPLE11,796,7201,800-100.0%
CALL_PY_EXACT_ARGS39,977,1807,100-100.0%
LOAD_ATTR_METHOD_WITH_VALUES28,180,4205,260-100.0%
LOAD_ATTR15,733,5603,160-100.0%
BINARY_SUBSCR11,801,7002,660-100.0%
TO_BOOL_ALWAYS_TRUE19,169,2005,580-100.0%
LOAD_GLOBAL_MODULE16,386,3204,880-100.0%
GET_ITER26,873,76012,300-100.0%
SWAP42,602,24020,560-100.0%
BUILD_LIST14,420,0008,200-99.9%
LOAD_FAST_AND_CLEAR15,730,56010,240-99.9%
LOAD_FAST_LOAD_FAST24,265,60021,980-99.9%
FOR_ITER_RANGE655,720660-99.9%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS655,3401,240-99.8%
BUILD_MAP1,310,7202,520-99.8%
CALL_ALLOC_AND_ENTER_INIT657,2402,260-99.7%
LOAD_ATTR_INSTANCE_VALUE137,635,820679,440-99.5%
STORE_ATTR_INSTANCE_VALUE1,977,42015,760-99.2%
STORE_FAST43,264,000681,360-98.4%
LOAD_CONST24,913,280664,780-97.3%
LOAD_GLOBAL_BUILTIN24,248,440658,600-97.3%
CALL_LEN12,451,860656,940-94.7%
COMPARE_OP_INT12,451,860656,940-94.7%
FOR_ITER_LIST184,169,12011,808,540-93.6%
LIST_APPEND106,178,8007,870,440-92.6%
LOAD_FAST266,740,72020,366,620-92.4%
STORE_FAST_LOAD_FAST144,845,04011,805,060-91.8%
TO_BOOL_BOOL31,457,2407,868,440-75.0%
POP_JUMP_IF_FALSE32,112,6408,523,840-73.5%
RETURN_VALUE28,182,8408,525,580-69.7%
POP_JUMP_IF_TRUE34,734,16011,802,180-66.0%
FOR_ITER_TUPLE4,2801,680-60.7%
RESUME_CHECK48,499,56019,670,620-59.4%
BUILD_SLICE1,920800-58.3%
POP_TOP28,836,90020,332,500-29.5%
BINARY_OP_ADD_INT3,8002,680-29.5%
TO_BOOL_NONE15,892,52011,796,620-25.8%
FOR_ITER_GEN700520-25.7%
LOAD_DEREF960720-25.0%
INTERPRETER_EXIT19,661,10019,661,1000.0%
YIELD_VALUE19,005,92019,005,9200.0%
RETURN_CONST1,968,2401,968,2400.0%
EXIT_INIT_CHECK657,240657,2400.0%
CALL_LIST_APPEND1,9001,9000.0%
CALL7607600.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK7207200.0%
LOAD_GLOBAL5605600.0%
FOR_ITER5205200.0%
PUSH_NULL4004000.0%
STORE_ATTR3603600.0%
COPY_FREE_VARS3203200.0%
END_FOR2402400.0%
MAKE_CELL2402400.0%
SET_FUNCTION_ATTRIBUTE2402400.0%
RESUME2002000.0%
CALL_NON_PY_GENERAL1801800.0%
LOAD_ATTR_MODULE1801800.0%
CALL_FUNCTION_EX1601600.0%
TO_BOOL1201200.0%
BINARY_OP1201200.0%
CALL_BUILTIN_CLASS1201200.0%
NOP80800.0%
CALL_INTRINSIC_180800.0%
LIST_EXTEND80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
ENTER_EXECUTOR28,202,920
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
3,86097.0%2,74095.8%-29.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
601.5%602.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success60100.0%60100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
35,389,86075.0%5,10065.7%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
11,798,46025.0%2,42031.2%-100.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure3,18098.1%18075.0%-94.3%
Success601.9%6025.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
out of range3,08096.9%10055.6%-96.8%
list slice1003.1%8044.4%-20.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
136,318,960100.0%672,86099.9%-99.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3800.0%3800.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success380100.0%380100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
15,728,70055.8%2,2400.3%-100.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
12,451,86044.2%656,94099.6%-94.7%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure4,04098.5%10062.5%-97.5%
Success601.5%6037.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
baseobject4,040100.0%100100.0%-97.5%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
184,829,820100.0%11,811,400100.0%-93.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2600.0%2600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success260100.0%260100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
15,729,0806.2%2,6200.4%-100.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
237,252,52093.8%689,78099.4%-99.7%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
7200.0%7200.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure4,04090.2%10018.5%-97.5%
Success4409.8%44081.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
mutable class4,040100.0%100100.0%-97.5%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
40,634,760100.0%663,48099.9%-98.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2800.0%2800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success280100.0%280100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,977,420100.0%15,76097.8%-99.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1800.0%1801.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success180100.0%180100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
17,366,96031.0%6,3600.0%-100.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
38,666,24069.0%19,661,880100.0%-49.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
600.0%600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success327,720100.0%180100.0%-99.9%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
43,270,5002.3%10,6600.0%-100.0%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
17,367,6800.9%7,2000.0%-100.0%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
746,510,80039.0%53,853,02025.2%-92.8%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
1,108,976,76057.9%160,162,58074.8%-85.6%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
COMPARE_OP15,728,70036.4%2,24026.4%-100.0%
LOAD_ATTR15,729,08036.4%2,62030.8%-100.0%
BINARY_SUBSCR11,798,46027.3%2,42028.5%-100.0%
CALL3800.0%3804.5%0.0%
LOAD_GLOBAL2800.0%2803.3%0.0%
FOR_ITER2600.0%2603.1%0.0%
STORE_ATTR1800.0%1802.1%0.0%
TO_BOOL600.0%600.7%0.0%
BINARY_OP600.0%600.7%0.0%
BINARY_SLICE00.0%00.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
TO_BOOL_NONE8,683,52050.0%3,18043.4%-100.0%
TO_BOOL_ALWAYS_TRUE8,683,44050.0%3,18043.4%-100.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK7200.0%7209.8%0.0%
CACHE00.0%00.0%
END_FOR00.0%00.0%
EXIT_INIT_CHECK00.0%00.0%
GET_ITER00.0%00.0%
INTERPRETER_EXIT00.0%00.0%
MAKE_FUNCTION00.0%
NOP00.0%
RESUME1201.6%
RESUME_CHECK1201.6%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault19,661,10032.6%19,661,10032.6%0.0%
Calls to Python functions inlined40,635,38067.4%40,635,38067.4%0.0%
Calls via PyEval_EvalFrame (total)19,661,10032.6%19,661,10032.6%0.0%
Calls via PyEval_EvalFrame (vector)2800.0%2800.0%0.0%
Calls via PyEval_EvalFrame (generator)19,660,82032.6%19,660,82032.6%0.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)2800.0%2800.0%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)1600.0%1600.0%0.0%
Calls via PyEval_EvalFrame (api)2400.0%2400.0%0.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed41,292,20068.5%41,292,20068.5%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Interpreter mortal increfs688,842,76049.7%809,405,80054.2%17.5%
Interpreter mortal decrefs775,341,68051.9%880,173,40053.7%13.5%
Mortal decrefs171,729,54411.5%187,466,64511.4%9.2%
Interpreter immortal decrefs292,344,34019.6%315,963,34019.3%8.1%
Method cache collisions2742947.3%
Method cache misses3093244.9%
Interpreter immortal increfs346,076,08025.0%333,622,82022.3%-3.6%
Method cache dunder misses8584-1.2%
Method cache dunder hits2352360.4%
Allocations to 4 kbytes1,310,7201.6%1,311,2601.6%0.0%
Method cache hits31,467,67131,459,776-0.0%
Frees to freelist27,531,50027,533,6600.0%
Allocations from freelist27,530,84033.1%27,532,98033.1%0.0%
Frees69,458,10869,460,4890.0%
Allocations55,694,36066.9%55,695,16066.9%0.0%
Immortal increfs171,699,75512.4%171,701,21311.5%0.0%
Mortal increfs178,937,43312.9%178,938,88312.0%0.0%
Allocations to 512 bytes54,383,64065.3%54,383,90065.3%0.0%
Immortal decrefs254,964,10417.1%254,964,75115.6%0.0%
Allocations over 4 kbytes00.0%00.0%
Inline values657,280657,2800.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-concurrent_imap-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-concurrent_imap-vs-base.md new file mode 100644 index 00000000..e665661b --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-concurrent_imap-vs-base.md @@ -0,0 +1,3577 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
FOR_ITER_GEN11,460,72021,920-99.8%
JUMP_BACKWARD29,037,359101,926-99.6%
STORE_FAST_LOAD_FAST11,639,90068,220-99.4%
CALL_TUPLE_11,051,10011,700-98.9%
FOR_ITER2,320,78059,080-97.5%
FOR_ITER_LIST12,287,687325,801-97.3%
UNPACK_SEQUENCE_TUPLE2,111,34095,157-95.5%
BINARY_SUBSCR1,111,29093,167-91.6%
DICT_MERGE1,140,780127,240-88.8%
BINARY_OP_MULTIPLY_FLOAT171,96022,020-87.2%
BINARY_SUBSCR_STR_INT171,96022,020-87.2%
TO_BOOL1,324,557176,144-86.7%
CONTAINS_OP_DICT1,260,755168,037-86.7%
BUILD_MAP2,423,316349,477-85.6%
CALL_METHOD_DESCRIPTOR_FAST1,390,841213,394-84.7%
STORE_SUBSCR_DICT1,410,965337,687-76.1%
GET_ITER1,621,882421,430-74.0%
FOR_ITER_RANGE196,16054,925-72.0%
COMPARE_OP_INT3,288,011952,661-71.0%
CALL_BUILTIN_O215,64065,460-69.6%
CALL_METHOD_DESCRIPTOR_O1,501,325455,986-69.6%
POP_JUMP_IF_NOT_NONE3,387,5311,105,093-67.4%
LOAD_FAST_LOAD_FAST11,814,0963,892,942-67.0%
BINARY_SUBSCR_LIST_INT89,54032,437-63.8%
LIST_APPEND290,676113,205-61.1%
POP_JUMP_IF_NONE1,843,424726,228-60.6%
BINARY_OP_ADD_FLOAT103,91141,036-60.5%
NOP11,386,8984,697,812-58.7%
LOAD_ATTR_INSTANCE_VALUE27,059,95311,767,203-56.5%
BUILD_TUPLE5,692,7252,518,153-55.8%
STORE_FAST_STORE_FAST7,398,5403,318,436-55.1%
POP_TOP26,679,13212,231,389-54.2%
PUSH_NULL10,845,5385,125,226-52.7%
CALL_NON_PY_GENERAL9,029,7354,415,563-51.1%
LOAD_ATTR_MODULE2,754,8191,385,995-49.7%
POP_JUMP_IF_TRUE2,520,3701,274,174-49.4%
FOR_ITER_TUPLE53,74027,340-49.1%
POP_JUMP_IF_FALSE10,915,8225,586,667-48.8%
SWAP7,066,4983,639,162-48.5%
BINARY_OP_ADD_INT2,106,7201,086,452-48.4%
UNPACK_SEQUENCE_TWO_TUPLE2,246,0001,185,676-47.2%
LOAD_ATTR_METHOD_NO_DICT7,257,8943,854,201-46.9%
COMPARE_OP_STR2,275,5111,209,262-46.9%
TO_BOOL_STR9,1804,960-46.0%
RESUME_CHECK37,901,47821,850,166-42.4%
UNARY_INVERT348,475201,513-42.2%
LOAD_FAST82,650,53548,019,968-41.9%
LOAD_ATTR_METHOD_WITH_VALUES4,330,9472,567,110-40.7%
CALL_PY_GENERAL3,409,3112,052,828-39.8%
LOAD_SPECIAL5,255,1263,165,252-39.8%
CALL_PY_EXACT_ARGS7,548,2994,568,148-39.5%
TO_BOOL_INT1,006,020614,191-38.9%
CALL_ISINSTANCE273,955171,134-37.5%
JUMP_FORWARD526,055336,972-35.9%
BINARY_OP1,538,5721,001,171-34.9%
LOAD_CONST18,172,56112,039,094-33.8%
LOAD_SUPER_ATTR_METHOD399,011265,091-33.6%
LOAD_ATTR4,294,1542,861,578-33.4%
LOAD_ATTR_PROPERTY266,958178,240-33.2%
LOAD_GLOBAL_MODULE10,089,7656,787,576-32.7%
BUILD_LIST445,352306,033-31.3%
STORE_ATTR_INSTANCE_VALUE4,023,1602,792,048-30.6%
BINARY_OP_ADD_UNICODE5,1003,600-29.4%
BINARY_OP_SUBTRACT_FLOAT82,44658,568-29.0%
LOAD_GLOBAL_BUILTIN5,592,3463,988,494-28.7%
COPY_FREE_VARS470,591336,551-28.5%
CALL_LIST_APPEND88,25066,192-25.0%
UNARY_NOT95,67471,821-24.9%
JUMP_BACKWARD_NO_INTERRUPT17,66413,280-24.8%
STORE_FAST31,755,07124,063,220-24.2%
LOAD_DEREF565,271431,231-23.7%
LIST_EXTEND69,26053,424-22.9%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES509,435394,091-22.6%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS125,40097,841-22.0%
TO_BOOL_LIST217,393170,147-21.7%
TO_BOOL_NONE471,706371,636-21.2%
COPY11,722,7799,454,756-19.3%
CALL_BOUND_METHOD_EXACT_ARGS88,24172,582-17.7%
IMPORT_FROM147,317121,290-17.7%
IMPORT_NAME148,717122,690-17.5%
CALL_KW_PY110,95092,952-16.2%
COMPARE_OP179,254155,572-13.2%
LOAD_FAST_AND_CLEAR188,150164,630-12.5%
RETURN_CONST5,020,1284,402,493-12.3%
CHECK_EXC_MATCH38,74434,360-11.3%
CALL_LEN419,520372,163-11.3%
TO_BOOL_BOOL3,425,6123,039,244-11.3%
CALL_BUILTIN_FAST894,809807,629-9.7%
POP_EXCEPT49,14444,760-8.9%
PUSH_EXC_INFO49,14444,760-8.9%
CALL_BUILTIN_CLASS1,343,6011,235,826-8.0%
COMPARE_OP_FLOAT500460-8.0%
RETURN_VALUE20,535,71818,932,234-7.8%
BINARY_OP_SUBTRACT_INT252,724233,634-7.6%
CALL_METHOD_DESCRIPTOR_NOARGS1,613,9621,500,223-7.0%
CALL_BOUND_METHOD_GENERAL122,980115,561-6.0%
LOAD_ATTR_METHOD_LAZY_DICT235,160221,448-5.8%
LOAD_FAST_CHECK1,155,4761,131,857-2.0%
CONTAINS_OP_SET2,4202,380-1.7%
CALL_BUILTIN_FAST_WITH_KEYWORDS2,237,0802,203,911-1.5%
TO_BOOL_ALWAYS_TRUE2322351.3%
INTERPRETER_EXIT13,715,14413,581,431-1.0%
RETURN_GENERATOR32,46032,340-0.4%
LOAD_ATTR_CLASS141,400141,8970.4%
SET_FUNCTION_ATTRIBUTE74,86074,740-0.2%
MAKE_FUNCTION113,400113,280-0.1%
LOAD_ATTR_SLOT76,50076,460-0.1%
STORE_DEREF259,480259,360-0.0%
CALL35,13735,122-0.0%
BINARY_SUBSCR_DICT211,460211,380-0.0%
BINARY_SUBSCR_TUPLE_INT110,920110,880-0.0%
LOAD_GLOBAL25,56025,556-0.0%
CALL_FUNCTION_EX4,479,6304,480,1290.0%
DELETE_ATTR155,991156,0000.0%
DELETE_SUBSCR166,894166,9000.0%
IS_OP85,43285,4350.0%
YIELD_VALUE12,481,38012,481,3800.0%
MAKE_CELL260,060260,0600.0%
CALL_KW_NON_PY190,120190,1200.0%
STORE_ATTR160,180160,1800.0%
CALL_ALLOC_AND_ENTER_INIT138,180138,1800.0%
EXIT_INIT_CHECK138,140138,1400.0%
FORMAT_SIMPLE95,08095,0800.0%
BUILD_STRING73,32073,3200.0%
STORE_ATTR_SLOT71,30071,3000.0%
LOAD_SUPER_ATTR_ATTR58,88058,8800.0%
STORE_SUBSCR53,66053,6600.0%
BINARY_OP_INPLACE_ADD_UNICODE51,70051,7000.0%
CONVERT_VALUE42,88042,8800.0%
BINARY_SLICE32,88032,8800.0%
RERAISE31,26031,2600.0%
CALL_STR_121,78021,7800.0%
END_FOR20,80020,8000.0%
STORE_NAME18,64018,6400.0%
RAISE_VARARGS10,52010,5200.0%
WITH_EXCEPT_START10,40010,4000.0%
RESUME8,3208,3200.0%
LOAD_NAME4,8604,8600.0%
CALL_KW1,5401,5400.0%
UNPACK_SEQUENCE1,2201,2200.0%
CALL_TYPE_11,0401,0400.0%
LOAD_BUILD_CLASS9809800.0%
LOAD_LOCALS9009000.0%
LOAD_SUPER_ATTR5605600.0%
CALL_INTRINSIC_14004000.0%
EXTENDED_ARG3403400.0%
CONTAINS_OP3203200.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK2402400.0%
STORE_GLOBAL80800.0%
BINARY_SUBSCR_GETITEM60600.0%
BUILD_SET20200.0%
MAP_ADD20200.0%
ENTER_EXECUTOR15,157,334
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
41,9891.0%530.0%-99.9%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,732,57263.4%1,496,95759.9%-45.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,530,37235.5%995,61939.9%-34.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,46116.3%66111.9%-54.8%
Failure7,52483.7%4,89288.1%-35.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
add different types2,86638.1%68213.9%-76.2%
and int2,43432.3%2,17644.5%-10.6%
remainder79610.6%71614.6%-10.1%
or1,22816.3%1,11822.9%-9.0%
add other2002.7%2004.1%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
32,880100.0%32,880100.0%0.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,110,08465.5%92,24019.6%-91.7%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
583,94034.4%376,77780.2%-35.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure90675.1%62767.6%-30.8%
Success30024.9%30032.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
buffer int88697.8%60796.8%-31.5%
list slice202.2%203.2%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
19,035,68499.8%12,070,73199.7%-36.6%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
5,5800.0%4,8400.0%-13.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
19,2720.1%19,2570.2%-0.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success16,745100.0%16,745100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
82053.2%82053.2%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
34,7320.6%11,5200.5%-66.8%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
5,529,29096.3%2,150,86392.8%-61.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
175,8613.1%152,5566.6%-13.3%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,63240.6%1,27439.6%-21.9%
Success2,39059.4%1,94260.4%-18.7%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
float long1,01662.3%65851.6%-35.2%
big int34020.8%34026.7%0.0%
different types27616.9%27621.7%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,263,175100.0%170,41799.8%-86.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1800.0%1800.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success140100.0%140100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
23,998,30791.2%429,98687.9%-98.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,318,0608.8%57,24011.7%-97.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure2,00073.5%1,12060.9%-44.0%
Success72026.5%72039.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other60030.0%22019.6%-63.3%
enumerate60030.0%22019.6%-63.3%
itertools38019.0%28025.0%-26.3%
callable24012.0%22019.6%-8.3%
dict items1407.0%14012.5%0.0%
set402.0%403.6%0.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
41,729,82388.9%19,728,71584.1%-52.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4,260,2139.1%2,828,37712.1%-33.6%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
903,4831.9%858,1703.7%-5.0%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
2000.0%2000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure14,15428.0%13,41627.4%-5.2%
Success36,41972.0%35,61072.6%-2.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
non overriding descriptor2,45217.3%2,18016.2%-11.1%
method4,57832.3%4,28131.9%-6.5%
class method obj6604.7%6204.6%-6.1%
overriding descriptor2,82620.0%2,71520.2%-3.9%
non object slot1,44010.2%1,44010.7%0.0%
mutable class2601.8%2601.9%0.0%
not managed dict1200.8%1200.9%0.0%
metaclass attribute800.6%800.6%0.0%
overridden600.4%600.4%0.0%
builtin class method400.3%400.3%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
15,653,27199.7%10,747,23099.5%-31.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
13,5780.1%13,5720.1%-0.0%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
8000.0%8000.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
28,8400.2%28,8400.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success12,082100.0%12,084100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_SUPER_ATTR + +
+ specialization stats for LOAD_SUPER_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
457,89199.9%323,97199.8%-29.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2600.1%2600.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success300100.0%300100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
3,750,34088.1%2,519,22883.3%-32.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
153,9203.6%153,9205.1%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
344,1208.1%344,12011.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success10,80085.0%10,80085.0%0.0%
Failure1,90015.0%1,90015.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
property1,08056.8%1,08056.8%0.0%
class attr simple52027.4%52027.4%0.0%
not in keys20010.5%20010.5%0.0%
overridden1005.3%1005.3%0.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,410,96596.3%337,68786.3%-76.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
52,7203.6%52,72013.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success30031.9%30031.9%0.0%
Failure64068.1%64068.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
py simple44068.8%44068.8%0.0%
other20031.2%20031.2%0.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,319,11820.4%171,2983.9%-87.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
5,129,03179.5%4,199,29896.0%-18.1%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
8800.0%8800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure2,41644.4%1,82537.7%-24.5%
Success3,02355.6%3,02162.3%-0.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple80033.1%42023.0%-47.5%
mapping96840.1%77842.6%-19.6%
sequence36815.2%34719.0%-5.7%
other2008.3%20011.0%0.0%
bytes803.3%804.4%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
4,357,340100.0%1,280,83399.9%-70.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6800.0%6800.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success540100.0%540100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
11,079,6642.0%4,657,7501.5%-58.0%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
176,308,19432.3%84,477,62227.6%-52.1%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
357,413,13065.4%216,094,31870.5%-39.5%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
1,359,6240.2%1,248,5370.4%-8.2%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
FOR_ITER2,318,06021.1%57,2401.3%-97.5%
BINARY_SUBSCR1,110,08410.1%92,2402.0%-91.7%
TO_BOOL1,319,11812.0%171,2983.7%-87.0%
BINARY_OP1,530,37213.9%995,61921.8%-34.9%
LOAD_ATTR4,260,21338.8%2,828,37761.9%-33.6%
COMPARE_OP175,8611.6%152,5563.3%-13.3%
CALL19,2720.2%19,2570.4%-0.1%
STORE_ATTR153,9201.4%153,9203.4%0.0%
STORE_SUBSCR52,7200.5%52,7201.2%0.0%
BINARY_SLICE32,8800.3%32,8800.7%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
COMPARE_OP_INT34,6722.6%11,4600.9%-66.9%
CALL_PY_EXACT_ARGS2,1400.2%1,3800.1%-35.5%
LOAD_ATTR_INSTANCE_VALUE749,01755.1%703,75056.4%-6.0%
LOAD_ATTR_METHOD_WITH_VALUES124,3469.1%124,30010.0%-0.0%
STORE_ATTR_INSTANCE_VALUE344,12025.3%344,12027.6%0.0%
BINARY_OP_ADD_FLOAT41,9893.1%
LOAD_ATTR_PROPERTY24,7801.8%24,7802.0%0.0%
LOAD_GLOBAL_MODULE18,1801.3%18,1801.5%0.0%
LOAD_GLOBAL_BUILTIN10,6600.8%10,6600.9%0.0%
LOAD_ATTR_MODULE5,1000.4%5,1000.4%0.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS1,0600.1%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Frame objects created49,5040.1%45,1200.1%-8.9%
Calls via PyEval_EvalFrame (api)403,3201.1%387,3961.0%-3.9%
Frames pushed25,566,55867.4%24,798,51666.7%-3.0%
Calls to Python functions inlined24,216,65163.8%23,582,32563.4%-2.6%
Calls via PyEval_EvalFrame (function vectorcall)12,671,04733.4%12,537,33133.7%-1.1%
Calls via PyEval_EvalFrame (vector)12,672,48733.4%12,538,77133.7%-1.1%
Calls to PyEval_EvalDefault13,725,60736.2%13,591,89136.6%-1.0%
Calls via PyEval_EvalFrame (total)13,725,60736.2%13,591,89136.6%-1.0%
Calls via PyEval_EvalFrame (generator)1,053,1202.8%1,053,1202.8%0.0%
Calls via PyEval_EvalFrame (legacy)4600.0%4600.0%0.0%
Calls via PyEval_EvalFrame (build class)9800.0%9800.0%0.0%
Calls via PyEval_EvalFrame (slot)1,124,2203.0%1,124,2203.0%0.0%
Calls via PyEval_EvalFrame (function ex)1,087,5402.9%1,087,5402.9%0.0%
Calls via PyEval_EvalFrame (method)400.0%400.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache dunder misses42,73128,064-34.3%
Method cache misses79,65499,07224.4%
Interpreter mortal increfs204,999,52752.5%239,393,61458.3%16.8%
Interpreter mortal decrefs221,596,91250.3%253,950,33252.6%14.6%
Interpreter immortal decrefs93,568,98521.3%105,788,45521.9%13.1%
Interpreter immortal increfs89,863,96323.0%78,187,60919.0%-13.0%
Inline values652,432589,834-9.6%
Method cache hits4,873,3294,454,170-8.6%
Method cache collisions116,960121,7264.1%
Immortal decrefs46,768,13310.6%45,161,4709.4%-3.4%
Immortal increfs40,226,17010.3%38,953,3299.5%-3.2%
Mortal increfs55,727,76314.3%53,989,03913.2%-3.1%
Allocations from freelist17,639,00041.9%17,108,96641.6%-3.0%
Frees to freelist17,650,01917,121,387-3.0%
Method cache dunder hits13,529,42913,246,367-2.1%
Frees24,780,10724,331,282-1.8%
Allocations to 512 bytes24,169,35857.5%23,773,08157.8%-1.6%
Allocations24,425,85058.1%24,030,82758.4%-1.6%
Allocations to 4 kbytes148,2920.4%149,5050.4%0.8%
Mortal decrefs78,236,22917.8%77,712,94316.1%-0.7%
Allocations over 4 kbytes108,2000.3%108,2410.3%0.0%
Materialize dict (on request)1,6000.2%1,6000.3%0.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
08080 / 0 !!
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
08080 / 0 !!
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files40400.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-coroutines-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-coroutines-vs-base.md new file mode 100644 index 00000000..97ba3c28 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-coroutines-vs-base.md @@ -0,0 +1,1707 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD640320-50.0%
FOR_ITER_RANGE700360-48.6%
CALL_METHOD_DESCRIPTOR_O620340-45.2%
LOAD_ATTR_METHOD_NO_DICT620340-45.2%
NOP1,360800-41.2%
STORE_FAST1,440880-38.9%
CALL_PY_EXACT_ARGS155,382,340155,382,060-0.0%
RETURN_GENERATOR155,382,400155,382,120-0.0%
LOAD_GLOBAL_MODULE155,382,520155,382,240-0.0%
LOAD_CONST466,147,200466,146,640-0.0%
LOAD_FAST388,456,720388,456,440-0.0%
POP_TOP155,383,120155,383,1800.0%
POP_JUMP_IF_FALSE155,383,040155,383,0400.0%
RETURN_VALUE155,382,560155,382,5600.0%
RESUME_CHECK155,382,500155,382,5000.0%
COMPARE_OP_INT155,382,380155,382,3800.0%
END_SEND155,381,760155,381,7600.0%
GET_AWAITABLE155,381,760155,381,7600.0%
BINARY_OP_SUBTRACT_INT155,381,720155,381,7200.0%
SEND_GEN155,381,720155,381,7200.0%
BINARY_OP_ADD_INT77,690,86077,690,8600.0%
LOAD_GLOBAL_BUILTIN6806800.0%
CHECK_EXC_MATCH6406400.0%
INTERPRETER_EXIT6406400.0%
POP_EXCEPT6406400.0%
PUSH_EXC_INFO6406400.0%
PUSH_NULL4004000.0%
CALL3203200.0%
LOAD_GLOBAL3203200.0%
LOAD_DEREF2402400.0%
CALL_NON_PY_GENERAL1801800.0%
LOAD_ATTR_MODULE1801800.0%
BINARY_OP1601600.0%
CALL_FUNCTION_EX1601600.0%
LOAD_ATTR1601600.0%
GET_ITER80800.0%
BUILD_LIST80800.0%
CALL_INTRINSIC_180800.0%
COPY_FREE_VARS80800.0%
LIST_EXTEND80800.0%
SEND80800.0%
RESUME60600.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
CALL_BUILTIN_CLASS60600.0%
COMPARE_OP40400.0%
FOR_ITER40400.0%
ENTER_EXECUTOR320
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
800.0%800.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
233,072,640100.0%233,072,640100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success80100.0%80100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
155,383,020100.0%155,382,460100.0%-0.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1600.0%1600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success160100.0%160100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.0%200.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
155,382,380100.0%155,382,380100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
70094.6%36090.0%-48.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
202.7%205.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
80083.3%52076.5%-35.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
808.3%8011.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success80100.0%80100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
155,383,200100.0%155,382,920100.0%-0.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1600.0%1600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success160100.0%160100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### SEND + +
+ specialization stats for SEND family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.0%400.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
155,381,720100.0%155,381,720100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
1,009,987,14036.1%1,009,985,68036.1%-0.0%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
1,786,905,82063.9%1,786,903,64063.9%-0.0%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
1,1200.0%1,1200.0%0.0%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
00.0%00.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
CALL16028.6%16028.6%0.0%
LOAD_GLOBAL16028.6%16028.6%0.0%
BINARY_OP8014.3%8014.3%0.0%
LOAD_ATTR8014.3%8014.3%0.0%
SEND407.1%407.1%0.0%
COMPARE_OP203.6%203.6%0.0%
FOR_ITER203.6%203.6%0.0%
BINARY_SLICE00.0%00.0%
STORE_SLICE00.0%00.0%
CACHE00.0%00.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault6400.0%6400.0%0.0%
Calls to Python functions inlined310,764,320100.0%310,764,320100.0%0.0%
Calls via PyEval_EvalFrame (total)6400.0%6400.0%0.0%
Calls via PyEval_EvalFrame (vector)00.0%00.0%
Calls via PyEval_EvalFrame (generator)6400.0%6400.0%0.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)00.0%00.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)1600.0%1600.0%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created800.0%800.0%0.0%
Frames pushed155,382,56050.0%155,382,56050.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache collisions4323-46.5%
Immortal decrefs1,3460.0%1,3840.0%2.8%
Method cache misses4342-2.3%
Method cache hits57581.8%
Mortal increfs4,7600.0%4,8000.0%0.8%
Mortal decrefs5,9000.0%5,9200.0%0.3%
Interpreter mortal increfs466,149,56026.1%466,149,88026.1%0.0%
Interpreter mortal decrefs621,773,88030.8%621,774,22030.8%0.0%
Interpreter immortal increfs1,165,369,40065.2%1,165,368,84065.2%-0.0%
Immortal increfs155,625,6468.7%155,625,7048.7%0.0%
Interpreter immortal decrefs1,398,202,10069.2%1,398,202,44069.2%0.0%
Allocations155,624,660100.0%155,624,680100.0%0.0%
Allocations from freelist9600.0%9600.0%0.0%
Frees to freelist9009000.0%
Allocations to 512 bytes155,624,660100.0%155,624,660100.0%0.0%
Allocations to 4 kbytes00.0%200.0%20 / 0 !!
Allocations over 4 kbytes00.0%00.0%
Frees155,624,640155,624,6400.0%
Inline values00
Materialize dict (on request)00
Materialize dict (new key)00
Materialize dict (too big)00
Materialize dict (str subclass)00
Method cache dunder hits00
Method cache dunder misses00
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-coverage-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-coverage-vs-base.md new file mode 100644 index 00000000..af4061c9 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-coverage-vs-base.md @@ -0,0 +1,3552 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
CONTAINS_OP342,4403,976-98.8%
UNPACK_SEQUENCE_TWO_TUPLE347,7605,056-98.5%
FOR_ITER351,8606,380-98.2%
JUMP_BACKWARD474,84810,440-97.8%
STORE_FAST_STORE_FAST352,6609,956-97.2%
STORE_SUBSCR_DICT354,50018,420-94.8%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES24,4601,540-93.7%
EXTENDED_ARG64,0206,600-89.7%
LOAD_FAST_LOAD_FAST960,200112,840-88.2%
TO_BOOL_LIST65,6408,660-86.8%
STORE_FAST_LOAD_FAST6,2201,020-83.6%
BINARY_OP_ADD_UNICODE100,28018,500-81.6%
COMPARE_OP_STR161,80031,420-80.6%
TO_BOOL_NONE26,0205,480-78.9%
POP_JUMP_IF_NOT_NONE69,24015,960-76.9%
FOR_ITER_LIST83,42821,280-74.5%
TO_BOOL_STR71,98020,040-72.2%
LOAD_ATTR_SLOT58,94017,200-70.8%
CALL_NON_PY_GENERAL33,10010,120-69.4%
CALL_BUILTIN_CLASS7,7602,560-67.0%
NOP71,94024,900-65.4%
CALL_BUILTIN_O66,52024,720-62.8%
PUSH_NULL149,66060,020-59.9%
LOAD_ATTR_METHOD_NO_DICT164,08869,563-57.6%
CALL_METHOD_DESCRIPTOR_FAST124,04853,163-57.1%
STORE_FAST454,268207,703-54.3%
FOR_ITER_RANGE8040-50.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS88,30046,480-47.4%
POP_JUMP_IF_TRUE93,90851,483-45.2%
FOR_ITER_TUPLE1,640900-45.1%
LIST_APPEND7,2804,600-36.8%
LOAD_DEREF60,92042,840-29.7%
TO_BOOL_BOOL165,288122,743-25.7%
CALL_KW_NON_PY3,7602,820-25.0%
LOAD_ATTR_MODULE208,740159,268-23.7%
CALL_METHOD_DESCRIPTOR_O2,1801,740-20.2%
UNARY_NEGATIVE400320-20.0%
JUMP_FORWARD16,28013,640-16.2%
POP_TOP67,34075,85912.7%
CALL_ISINSTANCE57,34050,760-11.5%
BINARY_SUBSCR24,60021,940-10.8%
BINARY_SUBSCR_LIST_INT1,5401,380-10.4%
LOAD_GLOBAL_BUILTIN137,680123,380-10.4%
CALL_BUILTIN_FAST20,38018,300-10.2%
BINARY_SUBSCR_STR_INT400360-10.0%
CALL_KW_PY1,2601,140-9.5%
LOAD_ATTR79,30071,940-9.3%
TO_BOOL12,14011,120-8.4%
BUILD_STRING1,040960-7.7%
RESUME_CHECK184,460171,560-7.0%
CALL_BOUND_METHOD_EXACT_ARGS320300-6.2%
FORMAT_SIMPLE1,3601,280-5.9%
BINARY_OP15,32014,440-5.7%
BINARY_SUBSCR_DICT7,7807,340-5.7%
BUILD_TUPLE23,82022,860-4.0%
TO_BOOL_INT580560-3.4%
CALL_ALLOC_AND_ENTER_INIT700680-2.9%
LOAD_ATTR_INSTANCE_VALUE20,04019,520-2.6%
RETURN_VALUE121,460118,840-2.2%
STORE_ATTR_INSTANCE_VALUE14,50014,280-1.5%
POP_JUMP_IF_FALSE39,624,74039,027,436-1.5%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS7,2807,180-1.4%
CALL_LEN6,6006,520-1.2%
LOAD_FAST98,594,11697,714,702-0.9%
BUILD_LIST8,4208,360-0.7%
LOAD_ATTR_METHOD_WITH_VALUES4,2204,200-0.5%
LOAD_GLOBAL_MODULE19,734,68019,675,012-0.3%
RETURN_CONST28,28028,260-0.1%
CALL_PY_EXACT_ARGS38,964,98038,951,636-0.0%
LOAD_CONST77,867,22077,858,936-0.0%
BINARY_OP_ADD_INT19,426,12019,426,100-0.0%
COMPARE_OP_INT38,853,62038,853,600-0.0%
INSTRUMENTED_LINE77,693,92077,693,9200.0%
BINARY_OP_SUBTRACT_INT38,853,18038,853,1800.0%
INSTRUMENTED_RESUME38,846,24038,846,2400.0%
INSTRUMENTED_RETURN_VALUE38,845,68038,845,6800.0%
LOAD_GLOBAL19,436,00019,436,0000.0%
INTERPRETER_EXIT53,94053,9400.0%
YIELD_VALUE33,16033,1600.0%
STORE_ATTR22,02022,0200.0%
GET_ITER19,96019,9600.0%
COPY_FREE_VARS17,34017,3400.0%
CALL_PY_GENERAL15,92015,9200.0%
MAKE_FUNCTION15,68015,6800.0%
SET_FUNCTION_ATTRIBUTE14,40014,4000.0%
CALL14,24014,2400.0%
RETURN_GENERATOR13,36013,3600.0%
COPY12,56012,5600.0%
BUILD_MAP11,48011,4800.0%
CONTAINS_OP_DICT11,18011,1800.0%
SWAP8,5008,5000.0%
MAKE_CELL7,0007,0000.0%
STORE_DEREF6,7206,7200.0%
CALL_FUNCTION_EX5,8405,8400.0%
RESUME5,6805,6800.0%
BINARY_SLICE5,4605,4600.0%
COMPARE_OP5,3805,3800.0%
CHECK_EXC_MATCH4,4804,4800.0%
POP_EXCEPT4,4804,4800.0%
PUSH_EXC_INFO4,4804,4800.0%
STORE_ATTR_SLOT4,1004,1000.0%
BINARY_SUBSCR_TUPLE_INT3,1603,1600.0%
DICT_MERGE3,0403,0400.0%
POP_JUMP_IF_NONE3,0003,0000.0%
LOAD_SUPER_ATTR_METHOD2,9602,9600.0%
CALL_LIST_APPEND2,8202,8200.0%
CALL_METHOD_DESCRIPTOR_NOARGS2,4602,4600.0%
IS_OP1,8401,8400.0%
IMPORT_NAME1,6001,6000.0%
UNPACK_SEQUENCE_TUPLE1,5601,5600.0%
LOAD_ATTR_WITH_HINT1,5401,5400.0%
CALL_INTRINSIC_11,4401,4400.0%
LIST_EXTEND1,4401,4400.0%
TO_BOOL_ALWAYS_TRUE1,4001,4000.0%
LOAD_FAST_AND_CLEAR1,3601,3600.0%
MAP_ADD1,2801,2800.0%
UNPACK_EX1,2801,2800.0%
COMPARE_OP_FLOAT1,1401,1400.0%
CALL_TUPLE_17407400.0%
CALL_TYPE_17407400.0%
LOAD_SPECIAL7207200.0%
EXIT_INIT_CHECK7007000.0%
CALL_KW6406400.0%
CONVERT_VALUE5605600.0%
STORE_ATTR_WITH_HINT5205200.0%
DELETE_ATTR4804800.0%
STORE_SUBSCR4604600.0%
UNPACK_SEQUENCE4404400.0%
BINARY_SUBSCR_GETITEM4004000.0%
CONTAINS_OP_SET4004000.0%
STORE_GLOBAL3203200.0%
LOAD_ATTR_PROPERTY3003000.0%
RAISE_VARARGS2602600.0%
RERAISE2602600.0%
LOAD_ATTR_CLASS2402400.0%
INSTRUMENTED_RETURN_CONST2402400.0%
BINARY_OP_INPLACE_ADD_UNICODE1801800.0%
LOAD_SUPER_ATTR1601600.0%
INSTRUMENTED_JUMP_BACKWARD1601600.0%
LOAD_FAST_CHECK1201200.0%
LOAD_ATTR_METHOD_LAZY_DICT1001000.0%
BUILD_SLICE80800.0%
STORE_SUBSCR_LIST_INT80800.0%
UNARY_INVERT60600.0%
UNARY_NOT60600.0%
BINARY_OP_MULTIPLY_INT60600.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
CALL_KW_BOUND_METHOD60600.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK60600.0%
ENTER_EXECUTOR70,888
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
14,1400.0%13,3000.0%-5.9%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
58,379,880100.0%58,298,080100.0%-0.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure82069.5%78068.4%-4.9%
Success36030.5%36031.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
remainder10012.2%607.7%-40.0%
add other28034.1%28035.9%0.0%
floor divide20024.4%20025.6%0.0%
add different types10012.2%10012.8%0.0%
multiply different types809.8%8010.3%0.0%
subtract other404.9%405.1%0.0%
and other202.4%202.6%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5,460100.0%5,460100.0%0.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
23,32061.6%20,78060.1%-10.9%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
13,22034.9%12,58036.4%-4.8%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
600.2%600.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,04081.2%92079.3%-11.5%
Success24018.8%24020.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
buffer int30028.8%18019.6%-40.0%
list slice62059.6%62067.4%0.0%
out of range1009.6%10010.9%0.0%
string slice201.9%202.2%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
39,353,288100.0%39,170,899100.0%-0.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
7,0000.0%7,0000.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
2800.0%2800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success7,560100.0%7,560100.0%0.0%
Failure00.0%00.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
init not python2020 / 0 !!2020 / 0 !!0.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
32050.0%32050.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
39,016,540100.0%38,886,140100.0%-0.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4,7400.0%4,7400.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
200.0%200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success44068.8%44068.8%0.0%
Failure20031.2%20031.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
different types14070.0%14070.0%0.0%
tuple6030.0%6030.0%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
341,62096.5%3,39621.8%-99.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
11,5803.3%11,58074.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure60073.2%36062.1%-40.0%
Success22026.8%22037.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other28046.7%8022.2%-71.4%
tuple14023.3%10027.8%-28.6%
list18030.0%18050.0%0.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
350,44080.2%5,30018.5%-98.5%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
85,14819.5%22,22077.7%-73.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure94066.2%60055.6%-36.2%
Success48033.8%48044.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
dict items64068.1%32053.3%-50.0%
dict keys10010.6%8013.3%-20.0%
set18019.1%18030.0%0.0%
dict values202.1%203.3%0.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
469,26883.5%260,07175.3%-44.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
68,14012.1%60,84017.6%-10.7%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
13,4602.4%13,4603.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure2,80024.6%2,74024.2%-2.1%
Success8,56075.4%8,56075.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
method48017.1%44016.1%-8.3%
module attr not found98035.0%96035.0%-2.0%
overriding descriptor98035.0%98035.8%0.0%
non object slot1003.6%1003.6%0.0%
not in dict1003.6%1003.6%0.0%
class method obj602.1%602.2%0.0%
not managed dict401.4%401.5%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
19,869,30050.5%19,795,33250.5%-0.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
19,429,90049.4%19,429,90049.5%0.0%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
2600.0%2600.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
3,0600.0%3,0600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success6,180100.0%6,180100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_SUPER_ATTR + +
+ specialization stats for LOAD_SUPER_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
802.6%802.6%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,96094.9%2,96094.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success80100.0%80100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
19,12046.5%18,90046.2%-1.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
15,80038.4%15,80038.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success3,62058.2%3,62058.2%0.0%
Failure2,60041.8%2,60041.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
not in dict2,22085.4%2,22085.4%0.0%
no dict2007.7%2007.7%0.0%
not in keys1003.8%1003.8%0.0%
not managed dict401.5%401.5%0.0%
class attr simple401.5%401.5%0.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
354,58099.9%18,50097.6%-94.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2400.1%2401.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success220100.0%220100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
327,34895.5%155,38391.6%-52.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
8,2402.4%7,2604.3%-11.9%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
3,2801.0%3,2201.9%-1.8%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure68017.3%64016.4%-5.9%
Success3,26082.7%3,26083.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other24035.3%20031.2%-16.7%
tuple24035.3%24037.5%0.0%
dict8011.8%8012.5%0.0%
bytes608.8%609.4%0.0%
set608.8%609.4%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
349,32099.9%6,61693.8%-98.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2200.1%2203.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success220100.0%220100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
20,310,4603.7%19,614,5963.6%-3.4%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
158,477,41228.6%156,848,20128.6%-1.0%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
374,764,84067.7%371,135,90367.8%-1.0%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
32,7400.0%32,6800.0%-0.2%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
FOR_ITER350,4401.7%5,3000.0%-98.5%
TO_BOOL8,2400.0%7,2600.0%-11.9%
BINARY_SUBSCR23,3200.1%20,7800.1%-10.9%
LOAD_ATTR68,1400.3%60,8400.3%-10.7%
BINARY_OP14,1400.1%13,3000.1%-5.9%
LOAD_GLOBAL19,429,90095.9%19,429,90099.3%0.0%
CONTAINS_OP341,6201.7%
STORE_ATTR15,8000.1%15,8000.1%0.0%
CALL7,0000.0%7,0000.0%0.0%
BINARY_SLICE5,4600.0%5,4600.0%0.0%
COMPARE_OP4,7400.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
TO_BOOL_NONE1,6403.6%1,5803.5%-3.7%
LOAD_ATTR_MODULE12,86028.4%12,86028.4%0.0%
RESUME12,58027.8%12,58027.8%0.0%
RESUME_CHECK12,58027.8%12,58027.8%0.0%
LOAD_GLOBAL_BUILTIN3,0606.8%3,0606.8%0.0%
TO_BOOL_ALWAYS_TRUE1,1202.5%1,1202.5%0.0%
LOAD_ATTR_METHOD_WITH_VALUES6001.3%6001.3%0.0%
TO_BOOL_STR5201.1%5201.1%0.0%
CALL_METHOD_DESCRIPTOR_FAST1000.2%1000.2%0.0%
CALL_METHOD_DESCRIPTOR_NOARGS1000.2%1000.2%0.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault53,9800.1%53,9800.1%0.0%
Calls to Python functions inlined38,987,80099.9%38,987,80099.9%0.0%
Calls via PyEval_EvalFrame (total)53,9800.1%53,9800.1%0.0%
Calls via PyEval_EvalFrame (vector)7,9800.0%7,9800.0%0.0%
Calls via PyEval_EvalFrame (generator)46,0000.1%46,0000.1%0.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)7,9800.0%7,9800.0%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)2000.0%2000.0%0.0%
Calls via PyEval_EvalFrame (function ex)4800.0%4800.0%0.0%
Calls via PyEval_EvalFrame (api)1,8400.0%1,8400.0%0.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created38,851,48099.5%38,851,48099.5%0.0%
Frames pushed38,996,48099.9%38,996,48099.9%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Allocations to 4 kbytes7,2400.0%8,8800.0%22.7%
Method cache collisions10,6149,575-9.8%
Method cache misses11,62110,703-7.9%
Method cache dunder misses1,3291,3672.9%
Frees to freelist428,640439,2002.5%
Allocations from freelist427,9800.5%437,7400.5%2.3%
Method cache dunder hits87,59187,433-0.2%
Interpreter mortal increfs61,687,1926.4%61,739,0046.4%0.1%
Interpreter immortal decrefs234,702,20022.9%234,795,72822.9%0.0%
Interpreter mortal decrefs120,727,99211.8%120,766,70111.8%0.0%
Mortal decrefs275,342,25926.8%275,377,83026.8%0.0%
Frees79,621,45079,629,9640.0%
Interpreter immortal increfs177,077,80018.3%177,065,99618.3%-0.0%
Allocations79,610,10099.5%79,612,62099.5%0.0%
Method cache hits38,954,73938,955,6170.0%
Mortal increfs409,902,05042.4%409,906,64442.4%0.0%
Allocations to 512 bytes79,598,02099.5%79,598,90099.4%0.0%
Immortal increfs318,945,61333.0%318,947,57733.0%0.0%
Immortal decrefs396,095,75938.6%396,097,43338.6%0.0%
Allocations over 4 kbytes4,8400.0%4,8400.0%0.0%
Inline values2,6402,6400.0%
Materialize dict (on request)2409.1%2409.1%0.0%
Materialize dict (new key)2409.1%2409.1%0.0%
Materialize dict (too big)1606.1%1606.1%0.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1209,600582,2802010,880588,720
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
04040 / 0 !!
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
04040 / 0 !!
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-crypto_pyaes-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-crypto_pyaes-vs-base.md new file mode 100644 index 00000000..07fd0ce3 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-crypto_pyaes-vs-base.md @@ -0,0 +1,2628 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
UNPACK_SEQUENCE_TWO_TUPLE7,359,980600-100.0%
FOR_ITER7,362,8601,260-100.0%
JUMP_BACKWARD32,265,1206,200-100.0%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES73,687,64019,760-100.0%
CALL_METHOD_DESCRIPTOR_FAST4,141,4201,380-100.0%
CALL_METHOD_DESCRIPTOR_NOARGS4,141,4201,380-100.0%
CALL_TYPE_14,141,4201,380-100.0%
TO_BOOL4,142,6801,540-100.0%
LOAD_FAST_LOAD_FAST97,650,56039,180-100.0%
PUSH_NULL8,284,8804,000-100.0%
LOAD_ATTR_MODULE4,143,1402,300-99.9%
LOAD_ATTR_METHOD_NO_DICT11,503,9007,380-99.9%
CALL_LIST_APPEND7,362,4806,000-99.9%
LOAD_ATTR_PROPERTY460,140600-99.9%
BINARY_OP291,614,4803,789,140-98.7%
BINARY_OP_ADD_INT57,552,340939,640-98.4%
BINARY_SUBSCR_LIST_INT196,208,8803,743,560-98.1%
STORE_SUBSCR_LIST_INT17,081,400473,940-97.2%
FOR_ITER_RANGE30,418,840931,500-96.9%
LOAD_FAST247,894,4007,948,500-96.8%
LOAD_CONST232,185,76010,232,900-95.6%
LIST_APPEND9,214,080463,400-95.0%
STORE_FAST41,962,4802,338,620-94.4%
STORE_FAST_STORE_FAST7,820,160460,780-94.1%
LOAD_GLOBAL_MODULE16,116,9801,393,420-91.4%
LOAD_ATTR_INSTANCE_VALUE24,905,1602,780,700-88.8%
STORE_FAST_LOAD_FAST5,120620-87.9%
EXTENDED_ARG6,7201,000-85.1%
CALL_BUILTIN_CLASS5,989,880927,440-84.5%
GET_ITER5,990,480928,040-84.5%
POP_JUMP_IF_FALSE5,531,280924,580-83.3%
RESUME_CHECK7,364,8201,385,960-81.2%
CALL_PY_EXACT_ARGS6,903,6401,383,280-80.0%
RETURN_VALUE6,904,5601,384,280-80.0%
LOAD_GLOBAL_BUILTIN6,445,5201,385,760-78.5%
POP_JUMP_IF_TRUE28,8006,940-75.9%
BINARY_OP_MULTIPLY_INT3,681,540921,060-75.0%
BINARY_SLICE1,842,240461,280-75.0%
BINARY_SUBSCR_TUPLE_INT1,260540-57.1%
CALL_BUILTIN_FAST1,260540-57.1%
LOAD_ATTR_METHOD_WITH_VALUES920,700461,160-49.9%
CALL_LEN2,302,8401,383,120-39.9%
COMPARE_OP_INT1,417,780929,260-34.5%
COPY1,409,280924,340-34.4%
BUILD_LIST1,849,6801,384,960-25.1%
BINARY_OP_SUBTRACT_INT947,080925,600-2.3%
POP_TOP920,800932,5201.3%
SWAP2,333,7602,308,360-1.1%
LIST_EXTEND920,400920,4000.0%
STORE_ATTR_INSTANCE_VALUE462,240462,2400.0%
LOAD_FAST_AND_CLEAR462,080462,0800.0%
RETURN_CONST461,440461,4400.0%
UNPACK_SEQUENCE_LIST460,140460,1400.0%
JUMP_FORWARD3,2003,2000.0%
LOAD_ATTR2,3602,3600.0%
BINARY_SUBSCR2,1602,1600.0%
CALL2,0802,0800.0%
LOAD_GLOBAL1,8801,8800.0%
EXIT_INIT_CHECK8808800.0%
CALL_ALLOC_AND_ENTER_INIT8808800.0%
CALL_NON_PY_GENERAL7807800.0%
STORE_SUBSCR4004000.0%
COMPARE_OP3803800.0%
CONTAINS_OP3803800.0%
POP_JUMP_IF_NOT_NONE3203200.0%
STORE_ATTR3203200.0%
RESUME3003000.0%
BINARY_SUBSCR_DICT3003000.0%
CALL_ISINSTANCE3003000.0%
LOAD_ATTR_CLASS3003000.0%
TO_BOOL_BOOL3003000.0%
LOAD_DEREF2402400.0%
CALL_FUNCTION_EX1601600.0%
INTERPRETER_EXIT1001000.0%
NOP80800.0%
CALL_INTRINSIC_180800.0%
COPY_FREE_VARS80800.0%
LOAD_FAST_CHECK80800.0%
UNPACK_SEQUENCE80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
ENTER_EXECUTOR945,820
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
291,529,14082.4%3,779,32057.5%-98.7%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
62,181,02017.6%2,786,36042.4%-95.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure84,84099.4%9,32094.9%-89.0%
Success5000.6%5005.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
remainder15,30018.0%1,08011.6%-92.9%
and int23,20027.3%1,84019.7%-92.1%
xor23,36027.5%1,90020.4%-91.9%
rshift17,54020.7%1,46015.7%-91.7%
or1,9202.3%9009.7%-53.1%
lshift2,4002.8%1,22013.1%-49.2%
multiply different types2400.3%1601.7%-33.3%
floor divide5800.7%4604.9%-20.7%
add other3000.4%3003.2%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,842,240100.0%461,280100.0%-75.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
196,210,440100.0%3,744,40099.9%-98.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,0800.0%1,0800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,080100.0%1,080100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
34,985,540100.0%3,705,70099.9%-89.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,0400.0%1,0400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,040100.0%1,040100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,417,780100.0%929,260100.0%-34.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2200.0%2200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success14087.5%14087.5%0.0%
Failure2012.5%2012.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
bytes20100.0%20100.0%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
32084.2%32084.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success00.0%00.0%
Failure60100.0%60100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple60100.0%60100.0%0.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
7,360,60019.5%9000.1%-100.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
30,418,84080.5%931,50099.9%-96.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,98087.6%8022.2%-96.0%
Success28012.4%28077.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
zip1,980100.0%80100.0%-96.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
115,620,980100.0%3,272,20099.9%-97.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,1800.0%1,1800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,180100.0%1,180100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
22,562,500100.0%2,779,18099.9%-87.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
9400.0%9400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success940100.0%940100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1600.0%1600.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
462,24099.9%462,24099.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success160100.0%160100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
17,081,400100.0%473,94099.9%-97.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2000.0%2000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success200100.0%200100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4,141,460100.0%1,42077.2%-100.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
3000.0%30016.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,20098.4%10083.3%-91.7%
Success201.6%2016.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other1,200100.0%100100.0%-91.7%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
7,820,120100.0%460,740100.0%-94.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.0%400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
304,972,30020.3%4,263,2607.3%-98.6%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
496,126,76033.0%20,932,46035.9%-95.8%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
704,107,36046.8%33,084,48056.8%-95.3%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
00.0%1000.0%100 / 0 !!
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
FOR_ITER7,360,6002.4%9000.0%-100.0%
TO_BOOL4,141,4601.4%1,4200.0%-100.0%
BINARY_OP291,529,14095.6%3,779,32089.0%-98.7%
BINARY_SLICE1,842,2400.6%461,28010.9%-75.0%
LOAD_ATTR1,1800.0%1,1800.0%0.0%
BINARY_SUBSCR1,0800.0%1,0800.0%0.0%
CALL1,0400.0%1,0400.0%0.0%
LOAD_GLOBAL9400.0%9400.0%0.0%
CONTAINS_OP3200.0%3200.0%0.0%
COMPARE_OP2200.0%2200.0%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
RESUME10050.0%
RESUME_CHECK10050.0%
CACHE00.0%
EXIT_INIT_CHECK00.0%
GET_ITER00.0%
INTERPRETER_EXIT00.0%
NOP00.0%
POP_TOP00.0%
PUSH_NULL00.0%
RETURN_VALUE00.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault1000.0%1000.0%0.0%
Calls to Python functions inlined7,365,020100.0%7,365,020100.0%0.0%
Calls via PyEval_EvalFrame (total)1000.0%1000.0%0.0%
Calls via PyEval_EvalFrame (vector)1000.0%1000.0%0.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)1000.0%1000.0%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)1600.0%1600.0%0.0%
Calls via PyEval_EvalFrame (api)200.0%200.0%0.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed7,366,000100.0%7,366,000100.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Interpreter immortal increfs486,811,30033.5%255,656,68020.8%-47.5%
Allocations over 4 kbytes3200.0%3400.0%6.2%
Method cache misses4855023.5%
Interpreter mortal increfs552,450,62038.1%563,964,34045.8%2.1%
Method cache dunder misses169166-1.8%
Method cache collisions3433491.7%
Interpreter mortal decrefs713,869,10041.4%725,383,70041.7%1.6%
Method cache hits2,0151,998-0.8%
Method cache dunder hits3913940.8%
Interpreter immortal decrefs715,048,00041.4%715,994,76041.2%0.1%
Immortal decrefs112,790,2946.5%112,796,3486.5%0.0%
Mortal decrefs183,408,83610.6%183,416,76810.6%0.0%
Mortal increfs147,705,82410.2%147,711,90612.0%0.0%
Allocations from freelist9,683,6604.7%9,684,0404.7%0.0%
Frees to freelist9,684,1809,684,5600.0%
Immortal increfs264,300,96518.2%264,308,05021.5%0.0%
Frees195,276,467195,278,9110.0%
Allocations194,355,20095.3%194,356,24095.3%0.0%
Allocations to 512 bytes194,354,88095.3%194,354,92095.3%0.0%
Allocations to 4 kbytes00.0%9800.0%980 / 0 !!
Inline values9609600.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-deepcopy-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-deepcopy-vs-base.md new file mode 100644 index 00000000..e718edcc --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-deepcopy-vs-base.md @@ -0,0 +1,2598 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD38,830,0805,140-100.0%
FOR_ITER_LIST19,333,08088,820-99.5%
FOR_ITER_RANGE2,130,0609,900-99.5%
STORE_FAST_LOAD_FAST3,809,28042,560-98.9%
LOAD_ATTR_INSTANCE_VALUE614,3808,100-98.7%
STORE_SUBSCR_LIST_INT614,3808,100-98.7%
TO_BOOL_NONE1,269,72018,320-98.6%
LIST_APPEND3,809,280124,280-96.7%
SWAP2,539,52084,320-96.7%
LOAD_FAST_AND_CLEAR1,269,76042,160-96.7%
CALL_BUILTIN_CLASS163,9808,400-94.9%
STORE_ATTR_INSTANCE_VALUE1,459,960100,920-93.1%
POP_JUMP_IF_NOT_NONE13,025,2801,381,240-89.4%
FOR_ITER_TUPLE9,543,5801,281,740-86.6%
FOR_ITER18,724,7402,588,840-86.2%
CALL_METHOD_DESCRIPTOR_FAST19,333,0002,745,100-85.8%
UNPACK_SEQUENCE_TWO_TUPLE13,721,5002,586,140-81.2%
STORE_FAST_STORE_FAST13,721,6002,586,240-81.2%
PUSH_NULL79,955,12016,687,300-79.1%
CALL_BUILTIN_FAST6,348,6001,343,000-78.8%
BUILD_MAP6,308,0801,335,440-78.8%
CALL_PY_GENERAL53,292,96011,674,720-78.1%
CALL_TYPE_145,629,38010,225,700-77.6%
CONTAINS_OP_SET45,629,38010,225,700-77.6%
STORE_FAST142,173,00037,445,720-73.7%
LOAD_ATTR5,123,9401,420,240-72.3%
LOAD_GLOBAL_MODULE72,089,66021,742,540-69.8%
LOAD_ATTR_MODULE7,454,9802,480,820-66.7%
POP_JUMP_IF_TRUE3,727,3801,269,980-65.9%
CALL_METHOD_DESCRIPTOR_NOARGS3,768,2601,315,720-65.1%
LOAD_FAST359,835,360125,651,500-65.1%
LOAD_ATTR_METHOD_NO_DICT29,449,96010,409,520-64.7%
LOAD_GLOBAL_BUILTIN94,289,22033,406,680-64.6%
GET_ITER10,895,6003,962,640-63.6%
CALL_BUILTIN_O50,093,64018,417,140-63.2%
RESUME_CHECK65,904,78024,369,700-63.0%
LOAD_FAST_LOAD_FAST117,760,34046,144,080-60.8%
POP_JUMP_IF_FALSE80,158,72031,881,940-60.2%
LOAD_CONST12,904,6805,239,840-59.4%
POP_JUMP_IF_NONE17,653,7807,687,020-56.5%
BUILD_LIST8,847,9403,917,680-55.7%
CALL_ISINSTANCE2,498,5001,247,100-50.1%
CALL_INTRINSIC_12,498,8001,247,400-50.1%
LIST_EXTEND2,498,9601,247,560-50.1%
IS_OP24,330,24012,751,420-47.6%
RETURN_VALUE55,747,14033,227,040-40.4%
POP_TOP32,031,02019,437,420-39.3%
CALL_NON_PY_GENERAL7,454,9805,008,480-32.8%
JUMP_FORWARD12,697,6208,926,120-29.7%
TO_BOOL_BOOL8,847,1006,344,300-28.3%
STORE_SUBSCR_DICT27,729,60020,327,460-26.7%
BINARY_SUBSCR_DICT8,888,2207,621,180-14.3%
NOP8,888,5807,621,540-14.3%
RETURN_CONST8,929,5208,929,5200.0%
CALL_PY_EXACT_ARGS8,888,2208,888,2200.0%
LOAD_DEREF7,578,4007,578,4000.0%
CALL_LIST_APPEND5,078,9805,078,9800.0%
CHECK_EXC_MATCH3,809,2803,809,2800.0%
POP_EXCEPT3,809,2803,809,2800.0%
PUSH_EXC_INFO3,809,2803,809,2800.0%
CALL_FUNCTION_EX3,768,8003,768,8000.0%
INTERPRETER_EXIT2,539,7002,539,7000.0%
MAKE_CELL2,539,6802,539,6800.0%
BINARY_OP_SUBTRACT_FLOAT2,457,6802,457,6800.0%
BINARY_OP_ADD_FLOAT2,457,5602,457,5600.0%
TO_BOOL1,271,0801,271,0800.0%
COPY_FREE_VARS1,270,0801,270,0800.0%
BUILD_TUPLE1,270,0001,270,0000.0%
MAKE_FUNCTION1,229,1201,229,1200.0%
SET_FUNCTION_ATTRIBUTE1,228,9601,228,9600.0%
RETURN_GENERATOR1,228,8001,228,8000.0%
YIELD_VALUE1,228,8001,228,8000.0%
LOAD_ATTR_CLASS1,228,7801,228,7800.0%
LOAD_ATTR_METHOD_WITH_VALUES41,00041,0000.0%
CALL_TUPLE_140,94040,9400.0%
CALL4,0004,0000.0%
LOAD_GLOBAL3,2203,2200.0%
STORE_SUBSCR6806800.0%
STORE_NAME6406400.0%
RESUME6006000.0%
BINARY_OP4404400.0%
STORE_ATTR3003000.0%
BINARY_SUBSCR2002000.0%
UNPACK_SEQUENCE2002000.0%
STORE_DEREF1601600.0%
CALL_ALLOC_AND_ENTER_INIT1201200.0%
CONTAINS_OP1201200.0%
EXIT_INIT_CHECK80800.0%
LOAD_BUILD_CLASS80800.0%
LOAD_LOCALS80800.0%
LOAD_NAME80800.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS60600.0%
ENTER_EXECUTOR16,817,800
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2800.0%2800.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
4,915,180100.0%4,915,180100.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
600.0%600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success12075.0%12075.0%0.0%
Failure4025.0%4025.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
multiply different types40100.0%40100.0%0.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
8,888,220100.0%7,621,180100.0%-14.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1000.0%1000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success100100.0%100100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
4,576,2803.1%168,8600.3%-96.3%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
141,843,64096.9%49,310,44099.7%-65.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,0200.0%2,0200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success88,300100.0%5,140100.0%-94.2%
Failure00.0%00.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
45,629,380100.0%10,225,700100.0%-77.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
600.0%600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success60100.0%60100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
31,006,72062.3%1,380,46034.8%-95.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
18,718,96037.6%2,587,00065.2%-86.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure5,54095.8%1,60087.0%-71.1%
Success2404.2%24013.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
dict items3,94071.1%90056.2%-77.2%
zip1,60028.9%70043.8%-56.2%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5,120,68011.7%1,418,0209.1%-72.3%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
38,785,92088.3%14,165,04090.9%-63.5%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
3,1800.0%3,1800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure2,62078.9%1,58069.3%-39.7%
Success70021.1%70030.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
method1,72065.6%68043.0%-60.5%
overriding descriptor90034.4%90057.0%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
166,378,880100.0%55,149,220100.0%-66.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,6200.0%1,6200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,600100.0%1,600100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1,383,86094.8%24,94024.6%-98.2%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
76,1005.2%75,98075.1%-0.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1600.0%1600.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success26,240100.0%580100.0%-97.8%
Failure00.0%00.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
28,343,980100.0%20,335,560100.0%-28.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3400.0%3400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success340100.0%340100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
10,116,82088.8%6,362,62083.3%-37.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,270,08011.2%1,270,08016.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success30030.0%30030.0%0.0%
Failure70070.0%70070.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple700100.0%700100.0%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
13,721,500100.0%2,586,140100.0%-81.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1000.0%1000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success100100.0%100100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
5,963,3800.3%197,1200.0%-96.7%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
25,128,9201.4%5,289,3200.8%-79.0%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
611,782,82035.1%213,011,52032.8%-65.2%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
1,100,158,58063.1%431,006,80066.4%-60.8%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
FOR_ITER18,718,96074.5%2,587,00049.0%-86.2%
LOAD_ATTR5,120,68020.4%1,418,02026.9%-72.3%
TO_BOOL1,270,0805.1%1,270,08024.1%0.0%
CALL2,0200.0%2,0200.0%0.0%
LOAD_GLOBAL1,6200.0%1,6200.0%0.0%
STORE_SUBSCR3400.0%3400.0%0.0%
BINARY_OP2800.0%2800.0%0.0%
STORE_ATTR1600.0%1600.0%0.0%
BINARY_SUBSCR1000.0%1000.0%0.0%
UNPACK_SEQUENCE1000.0%1000.0%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
STORE_ATTR_INSTANCE_VALUE1,383,86023.2%24,94012.6%-98.2%
CALL_PY_GENERAL4,576,24076.7%168,82085.6%-96.3%
LOAD_ATTR_METHOD_WITH_VALUES3,1800.1%3,1801.6%0.0%
BINARY_OP_ADD_FLOAT600.0%600.0%0.0%
CALL_ALLOC_AND_ENTER_INIT400.0%400.0%0.0%
CACHE00.0%00.0%
CHECK_EXC_MATCH00.0%00.0%
EXIT_INIT_CHECK00.0%00.0%
GET_ITER00.0%
INTERPRETER_EXIT00.0%
RESUME800.0%
RESUME_CHECK800.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault2,539,7003.8%2,539,7003.8%0.0%
Calls to Python functions inlined64,594,48096.2%64,594,48096.2%0.0%
Calls via PyEval_EvalFrame (total)2,539,7003.8%2,539,7003.8%0.0%
Calls via PyEval_EvalFrame (vector)82,1000.1%82,1000.1%0.0%
Calls via PyEval_EvalFrame (generator)2,457,6003.7%2,457,6003.7%0.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)82,0200.1%82,0200.1%0.0%
Calls via PyEval_EvalFrame (build class)800.0%800.0%0.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)2,499,0403.7%2,499,0403.7%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)200.0%200.0%0.0%
Frame objects created3,809,2805.7%3,809,2805.7%0.0%
Frames pushed64,676,66096.3%64,676,66096.3%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Allocations to 4 kbytes3200.0%1,3400.0%318.8%
Method cache dunder misses738,3401,598,472116.5%
Method cache collisions738,3521,598,413116.5%
Interpreter immortal increfs329,934,50023.2%284,853,58019.9%-13.7%
Interpreter immortal decrefs280,237,10019.3%299,640,42019.7%6.9%
Interpreter mortal increfs741,992,98052.1%793,184,40055.4%6.9%
Interpreter mortal decrefs816,281,44056.3%861,780,36056.6%5.6%
Method cache dunder hits18,108,56017,248,428-4.7%
Mortal decrefs211,810,43414.6%217,947,64614.3%2.9%
Method cache misses4234301.7%
Immortal decrefs141,800,8949.8%143,093,0589.4%0.9%
Immortal increfs182,936,93712.8%184,230,38912.9%0.7%
Method cache hits6,424,4976,397,850-0.4%
Mortal increfs169,812,33011.9%170,252,77511.9%0.3%
Frees88,623,14788,626,8650.0%
Allocations from freelist44,034,80034.2%44,035,52034.2%0.0%
Frees to freelist44,075,48044,076,2000.0%
Allocations84,852,14065.8%84,853,42065.8%0.0%
Allocations to 512 bytes84,851,82065.8%84,852,08065.8%0.0%
Allocations over 4 kbytes00.0%00.0%
Inline values1,269,9201,269,9200.0%
Materialize dict (on request)1,269,920100.0%1,269,920100.0%0.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1203,840209,000203,840211,500
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files60600.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-deltablue-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-deltablue-vs-base.md new file mode 100644 index 00000000..a17ea9ec --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-deltablue-vs-base.md @@ -0,0 +1,2468 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD85,411,84047,920-99.9%
BINARY_SUBSCR1,014,44011,160-98.9%
BINARY_OP_MULTIPLY_INT12,733,380155,120-98.8%
FOR_ITER_RANGE2,810,82048,120-98.3%
JUMP_FORWARD1,029,12024,520-97.6%
FOR_ITER_LIST83,404,6806,352,200-92.4%
BINARY_OP_SUBTRACT_INT179,14018,620-89.6%
BINARY_OP_ADD_INT14,330,7801,748,320-87.8%
PUSH_NULL5,440700-87.1%
LOAD_ATTR_CLASS157,490,96029,653,680-81.2%
CALL_LEN8,893,3801,922,940-78.4%
TO_BOOL_INT8,893,3801,928,160-78.3%
COMPARE_OP_INT175,610,54041,313,900-76.5%
LOAD_ATTR_INSTANCE_VALUE536,819,900129,024,880-76.0%
POP_JUMP_IF_FALSE183,116,88045,070,840-75.4%
CALL_PY_EXACT_ARGS246,335,36062,990,980-74.4%
LOAD_GLOBAL_MODULE188,941,96049,269,020-73.9%
LOAD_ATTR_METHOD_WITH_VALUES261,040,64069,095,680-73.5%
STORE_ATTR_INSTANCE_VALUE110,180,48029,270,000-73.4%
RESUME_CHECK263,274,40072,747,320-72.4%
RETURN_VALUE164,239,16045,474,720-72.3%
BINARY_OP1,711,760532,500-68.9%
LOAD_FAST782,992,000245,668,300-68.6%
POP_TOP106,204,46036,089,780-66.0%
RETURN_CONST102,190,08035,620,260-65.1%
LOAD_CONST18,590,8006,485,160-65.1%
STORE_FAST120,514,96042,954,080-64.4%
LOAD_GLOBAL_BUILTIN15,743,6607,231,920-54.1%
COMPARE_OP11,022,9805,263,880-52.2%
CALL_NON_PY_GENERAL7,429,0203,603,220-51.5%
POP_JUMP_IF_TRUE28,144,64016,257,360-42.2%
LOAD_ATTR17,240,8409,994,620-42.0%
CALL_BOUND_METHOD_EXACT_ARGS13,910,8608,234,160-40.8%
TO_BOOL_BOOL36,402,70022,502,160-38.2%
CALL_LIST_APPEND11,995,9407,729,280-35.6%
LOAD_FAST_LOAD_FAST40,647,68026,901,260-33.8%
CALL_ALLOC_AND_ENTER_INIT3,153,6402,119,700-32.8%
POP_JUMP_IF_NONE5,739,5203,955,700-31.1%
LOAD_SUPER_ATTR_METHOD6,804,2605,264,220-22.6%
COPY_FREE_VARS6,804,5605,264,520-22.6%
COPY9,313,2807,284,760-21.8%
GET_ITER8,115,2806,375,060-21.4%
SWAP1,592,3201,588,120-0.3%
CALL_METHOD_DESCRIPTOR_FAST6,371,6606,371,6600.0%
EXIT_INIT_CHECK3,153,6403,153,6400.0%
UNARY_NOT542,720542,7200.0%
LOAD_ATTR_SLOT122,760122,7600.0%
CALL_BUILTIN_CLASS46,02046,0200.0%
CALL_METHOD_DESCRIPTOR_O20,84020,8400.0%
BUILD_MAP20,48020,4800.0%
BINARY_SUBSCR_DICT20,46020,4600.0%
STORE_GLOBAL10,24010,2400.0%
CALL5,6405,6400.0%
INTERPRETER_EXIT5,4005,4000.0%
LOAD_FAST_CHECK5,1205,1200.0%
STORE_FAST_STORE_FAST5,1205,1200.0%
UNPACK_SEQUENCE_TUPLE5,1005,1000.0%
LOAD_GLOBAL3,9603,9600.0%
STORE_ATTR2,2002,2000.0%
RESUME1,2001,2000.0%
TO_BOOL1,1201,1200.0%
FOR_ITER5205200.0%
LOAD_SUPER_ATTR4404400.0%
LOAD_DEREF1601600.0%
LOAD_ATTR_MODULE1201200.0%
NOP80800.0%
CALL_FUNCTION_EX80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
UNPACK_SEQUENCE40400.0%
ENTER_EXECUTOR17,022,500
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
27,243,36094.1%1,922,12078.3%-92.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,710,3205.9%531,52021.7%-68.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,20083.3%74075.5%-38.3%
Success24016.7%24024.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
true divide other24020.0%14018.9%-41.7%
remainder96080.0%60081.1%-37.5%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,013,78098.0%10,86034.3%-98.9%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
20,4602.0%20,46064.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure64097.0%28093.3%-56.2%
Success203.0%206.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
buffer int640100.0%280100.0%-56.2%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
291,271,94095.6%86,068,98088.1%-70.5%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
13,366,6204.4%11,600,76011.9%-13.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,8200.0%2,8200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success254,840100.0%221,580100.0%-13.1%
Failure00.0%00.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
175,610,54094.1%41,313,90088.7%-76.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
11,018,6605.9%5,261,10011.3%-52.3%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure3,90090.3%2,36084.9%-39.5%
Success4209.7%42015.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
different types1,04026.7%1004.2%-90.4%
baseobject2,72069.7%2,12089.8%-22.1%
float long1403.6%1405.9%0.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
86,215,500100.0%6,400,320100.0%-92.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2600.0%2600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success260100.0%260100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
934,058,62096.0%210,094,34088.3%-77.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
17,227,8201.8%9,983,6404.2%-42.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
21,415,7602.2%17,802,7807.5%-16.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure8,8802.1%6,8402.0%-23.0%
Success407,94097.9%339,78098.0%-16.7%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
class method obj5,12057.7%3,62052.9%-29.3%
mutable class3,76042.3%3,22047.1%-14.4%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
204,685,620100.0%56,500,940100.0%-72.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,9800.0%1,9800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,980100.0%1,980100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_SUPER_ATTR + +
+ specialization stats for LOAD_SUPER_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6,804,260100.0%5,264,220100.0%-22.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2200.0%2200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success220100.0%220100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
106,418,42096.6%25,661,12087.7%-75.9%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
3,762,0603.4%3,608,88012.3%-4.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,1400.0%1,1400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success71,92099.9%69,04099.9%-4.0%
Failure400.1%400.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
not in keys40100.0%40100.0%0.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
45,296,080100.0%24,430,320100.0%-46.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5600.0%5600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success560100.0%560100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.4%200.4%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
5,10099.2%5,10099.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
2,134,420,86055.1%525,795,88046.9%-75.4%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
1,668,396,26043.1%545,829,80048.7%-67.3%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
31,003,9400.8%15,816,0801.4%-49.0%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
38,546,0401.0%33,014,7402.9%-14.3%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
BINARY_SUBSCR1,013,7803.3%10,8600.1%-98.9%
BINARY_OP1,710,3205.5%531,5203.4%-68.9%
COMPARE_OP11,018,66035.6%5,261,10033.3%-52.3%
LOAD_ATTR17,227,82055.6%9,983,64063.2%-42.0%
CALL2,8200.0%2,8200.0%0.0%
LOAD_GLOBAL1,9800.0%1,9800.0%0.0%
STORE_ATTR1,1400.0%1,1400.0%0.0%
TO_BOOL5600.0%5600.0%0.0%
FOR_ITER2600.0%2600.0%0.0%
LOAD_SUPER_ATTR2200.0%2200.0%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
RESUME1,6000.0%2,3200.0%45.0%
RESUME_CHECK1,6000.0%2,3200.0%45.0%
CALL_PY_EXACT_ARGS6,974,12018.1%5,208,26015.8%-25.3%
LOAD_ATTR_METHOD_WITH_VALUES13,250,00034.4%10,752,78032.6%-18.8%
LOAD_ATTR_INSTANCE_VALUE8,165,76021.2%7,050,00021.4%-13.7%
STORE_ATTR_INSTANCE_VALUE3,762,0609.8%3,608,88010.9%-4.1%
CALL_METHOD_DESCRIPTOR_FAST6,371,66016.5%6,371,66019.3%0.0%
CALL_METHOD_DESCRIPTOR_O20,8400.1%20,8400.1%0.0%
CACHE00.0%00.0%
EXIT_INIT_CHECK00.0%00.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault5,4000.0%5,4000.0%0.0%
Calls to Python functions inlined263,270,200100.0%263,270,200100.0%0.0%
Calls via PyEval_EvalFrame (total)5,4000.0%5,4000.0%0.0%
Calls via PyEval_EvalFrame (vector)5,4000.0%5,4000.0%0.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)5,4000.0%5,4000.0%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)800.0%800.0%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed266,429,240101.2%266,429,240101.2%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache collisions730,652486,218-33.5%
Method cache misses731,218487,012-33.4%
Interpreter immortal increfs618,113,92022.6%541,324,60019.0%-12.4%
Interpreter mortal increfs1,898,260,00069.4%2,087,456,32073.4%10.0%
Interpreter mortal decrefs1,971,197,16071.6%2,150,177,72072.8%9.1%
Mortal decrefs96,293,0943.5%103,987,9823.5%8.0%
Method cache dunder misses3273404.0%
Method cache hits58,922,40256,905,368-3.4%
Interpreter immortal decrefs627,043,54022.8%644,197,40021.8%2.7%
Immortal decrefs56,692,8182.1%55,164,3821.9%-2.7%
Mortal increfs117,451,8584.3%114,956,0914.0%-2.1%
Immortal increfs101,398,3933.7%100,013,1133.5%-1.4%
Allocations from freelist3,342,6806.1%3,344,6606.1%0.1%
Frees to freelist3,343,8803,345,8600.1%
Method cache dunder hits1,014,9931,014,620-0.0%
Frees55,118,15855,109,712-0.0%
Allocations51,549,34093.9%51,553,12093.9%0.0%
Allocations to 512 bytes51,549,34093.9%51,549,98093.9%0.0%
Allocations to 4 kbytes00.0%2,0200.0%2,020 / 0 !!
Allocations over 4 kbytes00.0%1,1200.0%1,120 / 0 !!
Inline values7,424,0007,424,0000.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
12,3203,945,30067,719,5002,3203,939,30067,732,800
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
0120120 / 0 !!
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
0120120 / 0 !!
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-django_template-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-django_template-vs-base.md new file mode 100644 index 00000000..2533011a --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-django_template-vs-base.md @@ -0,0 +1,2852 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD22,658,5603,040-100.0%
NOP22,595,92035,635-99.8%
POP_JUMP_IF_NONE3,232,6407,530-99.8%
BINARY_SUBSCR_GETITEM3,264,2809,646-99.7%
CONTAINS_OP3,330,34011,825-99.6%
FOR_ITER_TUPLE6,497,24041,285-99.4%
STORE_SUBSCR_DICT19,391,880195,600-99.0%
BINARY_OP_SUBTRACT_INT12,927,920130,400-99.0%
BINARY_OP_ADD_INT3,231,98032,600-99.0%
COMPARE_OP_INT6,561,240133,940-98.0%
SWAP3,332,16077,784-97.7%
LOAD_ATTR_METHOD_WITH_VALUES32,522,8803,332,856-89.8%
CALL_METHOD_DESCRIPTOR_FAST32,6204,080-87.5%
FOR_ITER12,964,9803,244,513-75.0%
FOR_ITER_LIST22,658,4606,498,680-71.3%
LOAD_ATTR_INSTANCE_VALUE51,913,30019,616,473-62.2%
LOAD_FAST_LOAD_FAST42,053,12016,291,333-61.3%
CALL_PY_EXACT_ARGS45,272,82019,361,094-57.2%
POP_JUMP_IF_TRUE12,993,2806,476,044-50.2%
CALL_BUILTIN_CLASS6,496,6403,242,084-50.1%
BINARY_SUBSCR6,530,8003,275,584-49.8%
UNPACK_SEQUENCE_TWO_TUPLE6,431,9603,232,580-49.7%
STORE_FAST_STORE_FAST6,432,0003,232,620-49.7%
GET_ITER19,458,6409,780,769-49.7%
STORE_SUBSCR6,531,0603,330,880-49.0%
LOAD_FAST297,070,400164,931,259-44.5%
RESUME_CHECK80,748,40048,383,499-40.1%
LOAD_ATTR_METHOD_NO_DICT28,994,66019,302,960-33.4%
CALL_PY_GENERAL9,665,4406,438,942-33.4%
BINARY_SUBSCR_LIST_INT9,631,9406,432,560-33.2%
CONTAINS_OP_DICT97,70065,540-32.9%
POP_TOP9,895,1806,647,644-32.8%
LOAD_CONST122,570,32083,994,342-31.5%
CALL_LEN97,22068,680-29.4%
STORE_FAST77,514,00054,852,534-29.2%
TO_BOOL_BOOL73,891,98064,235,049-13.1%
CALL_ISINSTANCE25,633,14022,406,249-12.6%
POP_JUMP_IF_FALSE64,293,84057,808,030-10.1%
LOAD_GLOBAL_BUILTIN80,425,60073,915,313-8.1%
LOAD_GLOBAL_MODULE54,531,58051,304,689-5.9%
FOR_ITER_RANGE380360-5.3%
LOAD_DEREF6,530,0806,466,040-1.0%
RETURN_VALUE70,920,40070,920,4000.0%
CALL_BUILTIN_FAST22,466,68022,466,6800.0%
PUSH_NULL16,033,92016,033,9200.0%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS15,999,90015,999,9000.0%
INTERPRETER_EXIT9,828,8409,828,8400.0%
CALL_LIST_APPEND9,729,5409,729,5400.0%
CALL_BUILTIN_O9,697,2209,697,2200.0%
CALL_FUNCTION_EX9,666,0009,666,0000.0%
RETURN_CONST6,531,5206,531,5200.0%
BUILD_MAP6,498,5606,498,5600.0%
BUILD_LIST6,497,9206,497,9200.0%
JUMP_FORWARD6,497,6006,497,6000.0%
DICT_MERGE6,465,9206,465,9200.0%
COPY_FREE_VARS6,465,6806,465,6800.0%
CALL_NON_PY_GENERAL6,433,7206,433,7200.0%
CALL_KW_PY6,432,2606,432,2600.0%
CALL_STR_16,400,9006,400,9000.0%
LOAD_ATTR_MODULE6,400,1006,400,1000.0%
YIELD_VALUE3,297,2803,297,2800.0%
COPY3,265,2803,265,2800.0%
RETURN_GENERATOR3,232,9603,232,9600.0%
CALL_INTRINSIC_13,232,6403,232,6400.0%
LIST_EXTEND3,232,6403,232,6400.0%
MAKE_FUNCTION3,232,3203,232,3200.0%
CALL_TYPE_13,200,6003,200,6000.0%
CALL_METHOD_DESCRIPTOR_NOARGS3,200,0003,200,0000.0%
STORE_SUBSCR_LIST_INT3,199,9803,199,9800.0%
LOAD_SPECIAL65,92065,9200.0%
STORE_ATTR_INSTANCE_VALUE36,00036,0000.0%
POP_JUMP_IF_NOT_NONE33,92033,9200.0%
LOAD_SUPER_ATTR_ATTR32,62032,6200.0%
CALL_METHOD_DESCRIPTOR_O32,60032,6000.0%
BUILD_TUPLE32,32032,3200.0%
LOAD_FAST_CHECK32,32032,3200.0%
MAKE_CELL32,32032,3200.0%
SET_FUNCTION_ATTRIBUTE32,32032,3200.0%
STORE_FAST_LOAD_FAST32,32032,3200.0%
CALL3,1603,1600.0%
LOAD_ATTR2,4802,4800.0%
LOAD_GLOBAL2,2802,2800.0%
DELETE_ATTR1,9201,9200.0%
STORE_ATTR1,8001,8000.0%
TO_BOOL1,0001,0000.0%
RESUME8008000.0%
CHECK_EXC_MATCH6406400.0%
POP_EXCEPT6406400.0%
PUSH_EXC_INFO6406400.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK6206200.0%
BINARY_OP2402400.0%
COMPARE_OP2402400.0%
CALL_KW1201200.0%
UNPACK_SEQUENCE80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
LOAD_SUPER_ATTR40400.0%
ENTER_EXECUTOR19,462,780
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
16,159,960100.0%163,06099.9%-99.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1200.0%1200.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success120100.0%120100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
12,896,22066.4%6,442,20666.3%-50.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6,528,74033.6%3,274,36433.7%-49.8%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,96095.1%1,12091.8%-42.9%
Success1004.9%1008.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other98050.0%14012.5%-85.7%
out of range98050.0%98087.5%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
4,392,1803.0%5,5720.0%-99.9%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
143,867,70097.0%115,804,055100.0%-19.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,5800.0%1,5800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success84,500100.0%1,740100.0%-97.9%
Failure00.0%00.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6050.0%6050.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6,561,240100.0%133,94099.8%-98.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1200.0%1200.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success120100.0%120100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3,328,52097.1%10,94514.1%-99.7%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
64,6401.9%32,48042.0%-49.8%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
33,0601.0%33,06042.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,80073.8%86057.3%-52.2%
Success64026.2%64042.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other1,800100.0%860100.0%-52.2%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
29,156,08069.2%6,540,32566.8%-77.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
12,961,12030.8%3,243,08433.1%-75.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure3,70095.9%1,26988.8%-65.7%
Success1604.1%16011.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
reversed list1,00027.0%14911.7%-85.1%
enumerate98026.5%18014.2%-81.6%
itertools1,72046.5%94074.1%-45.3%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
8,788,4007.3%9,2520.0%-99.9%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
111,043,16092.7%48,643,757100.0%-56.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,2400.0%1,2400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success167,000100.0%1,380100.0%-99.2%
Failure00.0%00.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
134,957,180100.0%125,220,002100.0%-7.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,1400.0%1,1400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,140100.0%1,140100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_SUPER_ATTR + +
+ specialization stats for LOAD_SUPER_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.1%200.1%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
32,62099.9%32,62099.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,4403.8%1,4403.8%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
36,00095.2%36,00095.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success16044.4%16044.4%0.0%
Failure20055.6%20055.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
class attr simple200100.0%200100.0%0.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
22,591,86077.6%3,395,58050.5%-85.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6,528,78022.4%3,329,40049.5%-49.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure2,14093.9%1,34090.5%-37.4%
Success1406.1%1409.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
py simple1,16054.2%36026.9%-69.0%
dict subclass no override98045.8%98073.1%0.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
73,891,980100.0%64,235,049100.0%-13.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5000.0%5000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success500100.0%500100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6,431,960100.0%3,232,580100.0%-49.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.0%400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
13,213,6400.8%48,4450.0%-99.6%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
29,368,6201.9%9,874,2420.9%-66.4%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
660,970,42041.9%441,599,51442.2%-33.2%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
875,795,70055.5%595,232,94456.9%-32.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
CONTAINS_OP3,328,52011.3%10,9450.1%-99.7%
FOR_ITER12,961,12044.2%3,243,08432.9%-75.0%
BINARY_SUBSCR6,528,74022.2%3,274,36433.2%-49.8%
STORE_SUBSCR6,528,78022.2%3,329,40033.8%-49.0%
CALL1,5800.0%1,5800.0%0.0%
STORE_ATTR1,4400.0%1,4400.0%0.0%
LOAD_ATTR1,2400.0%1,2400.0%0.0%
LOAD_GLOBAL1,1400.0%1,1400.0%0.0%
TO_BOOL5000.0%5000.0%0.0%
BINARY_OP1200.0%1200.0%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
LOAD_ATTR_METHOD_WITH_VALUES8,787,46066.5%8,31217.0%-99.9%
CALL_PY_EXACT_ARGS4,392,18033.2%5,57211.4%-99.9%
CONTAINS_OP_DICT33,0600.3%33,06067.5%0.0%
LOAD_ATTR_INSTANCE_VALUE9400.0%9401.9%0.0%
CACHE00.0%00.0%
CHECK_EXC_MATCH00.0%00.0%
GET_ITER00.0%00.0%
INTERPRETER_EXIT00.0%00.0%
MAKE_FUNCTION00.0%
NOP00.0%
RESUME5611.1%
RESUME_CHECK5611.1%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault9,828,84011.7%9,828,84011.7%0.0%
Calls to Python functions inlined74,153,32088.3%74,153,32088.3%0.0%
Calls via PyEval_EvalFrame (total)9,828,84011.7%9,828,84011.7%0.0%
Calls via PyEval_EvalFrame (vector)3,330,6004.0%3,330,6004.0%0.0%
Calls via PyEval_EvalFrame (generator)6,498,2407.7%6,498,2407.7%0.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)3,330,6004.0%3,330,6004.0%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)3,297,0003.9%3,297,0003.9%0.0%
Calls via PyEval_EvalFrame (function ex)9,600,72011.4%9,600,72011.4%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created6400.0%6400.0%0.0%
Frames pushed77,483,92092.3%77,483,92092.3%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache hits18,393,1869,613,977-47.7%
Interpreter immortal increfs245,372,72019.2%203,542,18615.4%-17.0%
Interpreter mortal increfs698,525,92054.8%791,137,23660.0%13.3%
Method cache misses55461511.0%
Interpreter immortal decrefs197,179,98014.9%216,642,68215.2%9.9%
Method cache collisions9221,0129.8%
Interpreter mortal decrefs813,919,42061.4%888,253,58862.2%9.1%
Method cache dunder misses4504857.8%
Mortal decrefs171,531,60812.9%181,047,20912.7%5.5%
Mortal increfs189,848,26514.9%181,079,92313.7%-4.6%
Allocations to 4 kbytes64,0000.1%64,5800.1%0.9%
Frees67,948,62667,954,4820.0%
Method cache dunder hits42,121,01042,119,335-0.0%
Allocations from freelist38,923,00036.4%38,923,84036.4%0.0%
Frees to freelist38,923,08038,923,9200.0%
Allocations67,916,12063.6%67,916,90063.6%0.0%
Immortal increfs141,853,48311.1%141,854,79510.8%0.0%
Immortal decrefs142,200,10010.7%142,200,64010.0%0.0%
Allocations to 512 bytes67,850,84063.5%67,851,04063.5%0.0%
Allocations over 4 kbytes1,2800.0%1,2800.0%0.0%
Inline values3,265,9203,265,9200.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-docutils-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-docutils-vs-base.md new file mode 100644 index 00000000..22635dcb --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-docutils-vs-base.md @@ -0,0 +1,4242 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
CALL_BUILTIN_O23,642,020739,100-96.9%
STORE_FAST_LOAD_FAST19,173,4001,234,360-93.6%
LIST_APPEND27,078,2602,090,380-92.3%
FOR_ITER_RANGE5,119,640450,460-91.2%
CONTAINS_OP_DICT72,558,7009,085,680-87.5%
JUMP_BACKWARD278,190,02037,128,840-86.7%
TO_BOOL_INT22,778,5203,770,780-83.4%
UNPACK_SEQUENCE_TUPLE24,048,9005,236,040-78.2%
STORE_SLICE356,34082,000-77.0%
CALL_BOUND_METHOD_GENERAL32,3209,780-69.7%
CALL_KW_NON_PY1,929,640624,860-67.6%
FOR_ITER60,541,34019,635,120-67.6%
FOR_ITER_LIST221,394,42075,377,800-66.0%
CONTAINS_OP16,579,5805,774,060-65.2%
STORE_FAST_STORE_FAST64,621,08022,643,900-65.0%
UNPACK_SEQUENCE_LIST140,64051,920-63.1%
LOAD_ATTR_MODULE38,617,78014,313,500-62.9%
FOR_ITER_TUPLE92,701,60037,063,980-60.0%
LOAD_ATTR_SLOT70,726,66028,502,000-59.7%
TO_BOOL_NONE87,162,90036,589,900-58.0%
TO_BOOL_ALWAYS_TRUE6,863,2202,886,100-57.9%
POP_JUMP_IF_TRUE181,263,88077,684,420-57.1%
UNARY_NOT495,320214,060-56.8%
UNPACK_SEQUENCE_TWO_TUPLE40,454,72017,551,560-56.6%
BINARY_SUBSCR_DICT67,285,52030,180,400-55.1%
CONTAINS_OP_SET271,880122,820-54.8%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS18,778,7808,788,380-53.2%
CONVERT_VALUE40,282,10019,413,780-51.8%
FORMAT_SIMPLE40,284,54019,415,500-51.8%
LOAD_ATTR_WITH_HINT69,919,66034,004,780-51.4%
BUILD_STRING20,138,1209,957,940-50.6%
BINARY_SUBSCR_LIST_INT29,557,68014,630,060-50.5%
CALL_NON_PY_GENERAL45,427,22022,684,920-50.1%
PUSH_NULL81,829,92041,259,200-49.6%
UNARY_INVERT23,74011,980-49.5%
CALL_PY_GENERAL68,552,24035,361,540-48.4%
IS_OP1,292,860677,180-47.6%
CALL_BOUND_METHOD_EXACT_ARGS13,658,0007,164,720-47.5%
BINARY_SLICE16,325,7608,592,780-47.4%
BINARY_OP_ADD_UNICODE25,926,80013,985,640-46.1%
COPY25,694,10013,876,000-46.0%
BINARY_OP28,358,88015,421,600-45.6%
COMPARE_OP_STR17,902,7209,754,140-45.5%
STORE_FAST591,189,000329,994,400-44.2%
DELETE_SUBSCR2,516,5201,406,380-44.1%
COMPARE_OP_INT29,846,94016,959,180-43.2%
LOAD_ATTR_INSTANCE_VALUE510,395,980299,662,640-41.3%
POP_JUMP_IF_FALSE338,351,460200,812,920-40.6%
LOAD_ATTR146,367,94088,095,320-39.8%
LOAD_ATTR_METHOD_WITH_VALUES298,797,660182,530,740-38.9%
COPY_FREE_VARS1,111,520701,360-36.9%
LOAD_GLOBAL_MODULE125,784,88080,177,460-36.3%
LOAD_FAST2,144,686,2001,367,469,540-36.2%
CALL_BUILTIN_FAST90,439,28058,027,660-35.8%
TO_BOOL_STR20,350,74013,095,920-35.6%
BINARY_SUBSCR_STR_INT9,505,1206,227,120-34.5%
LOAD_FAST_LOAD_FAST396,469,100260,760,460-34.2%
BINARY_OP_INPLACE_ADD_UNICODE1,110,840732,280-34.1%
LOAD_DEREF1,275,100840,740-34.1%
LOAD_GLOBAL_BUILTIN302,083,660200,775,620-33.5%
NOP175,300,140116,839,180-33.3%
STORE_SUBSCR_DICT55,735,06037,229,060-33.2%
CALL_BUILTIN_CLASS7,889,6005,289,980-32.9%
LOAD_CONST367,623,760246,848,920-32.9%
EXTENDED_ARG3,241,8202,179,440-32.8%
LOAD_ATTR_METHOD_NO_DICT197,220,560132,613,400-32.8%
CALL_PY_EXACT_ARGS261,092,000176,403,420-32.4%
CALL_LEN39,761,82027,070,240-31.9%
CALL_METHOD_DESCRIPTOR_FAST37,656,20025,646,160-31.9%
POP_JUMP_IF_NOT_NONE77,736,18053,154,860-31.6%
CALL_ISINSTANCE126,212,00087,291,220-30.8%
GET_YIELD_FROM_ITER1,9601,360-30.6%
RESUME_CHECK424,342,040294,881,900-30.5%
COMPARE_OP_FLOAT2,0601,440-30.1%
BUILD_TUPLE50,228,12035,219,180-29.9%
BINARY_OP_ADD_INT30,869,08021,678,880-29.8%
STORE_SUBSCR_LIST_INT1,146,860806,840-29.6%
TO_BOOL4,953,4803,493,600-29.5%
TO_BOOL_BOOL225,889,780160,960,960-28.7%
CALL_METHOD_DESCRIPTOR_O32,165,04023,044,320-28.4%
BINARY_SUBSCR_GETITEM11,192,9408,047,640-28.1%
CALL_METHOD_DESCRIPTOR_NOARGS20,508,80014,819,660-27.7%
STORE_ATTR29,536,32021,571,700-27.0%
BUILD_LIST78,956,26058,750,200-25.6%
SWAP22,974,82017,225,840-25.0%
LOAD_NAME46,78036,200-22.6%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES94,784,86074,474,760-21.4%
POP_JUMP_IF_NONE10,910,6808,602,920-21.2%
LOAD_FAST_AND_CLEAR3,321,8402,638,440-20.6%
LOAD_SPECIAL44,92036,600-18.5%
BINARY_OP_SUBTRACT_INT7,409,0406,097,540-17.7%
CALL_BUILTIN_FAST_WITH_KEYWORDS3,944,2403,263,580-17.3%
JUMP_FORWARD7,272,3806,041,520-16.9%
TO_BOOL_LIST15,319,62012,916,160-15.7%
GET_ITER164,216,460140,334,440-14.5%
RETURN_CONST217,448,160190,216,940-12.5%
POP_TOP284,526,180252,610,020-11.2%
STORE_SUBSCR6,441,0205,764,880-10.5%
BINARY_SUBSCR14,211,36012,855,520-9.5%
BINARY_OP_MULTIPLY_INT17,26015,640-9.4%
LOAD_ATTR_PROPERTY12,839,06011,691,400-8.9%
FOR_ITER_GEN55,600,02050,703,540-8.8%
CALL_LIST_APPEND55,436,94050,594,660-8.7%
CALL_KW_PY4,302,3403,936,500-8.5%
COMPARE_OP2,337,8802,140,480-8.4%
EXIT_INIT_CHECK1,521,9801,647,7808.3%
BUILD_SLICE587,620541,200-7.9%
DICT_MERGE4,621,2404,276,140-7.5%
LOAD_ATTR_CLASS30,832,32028,708,080-6.9%
SEND_GEN9,6209,020-6.2%
RETURN_VALUE197,078,940185,850,500-5.7%
CALL_ALLOC_AND_ENTER_INIT3,802,7203,675,680-3.3%
BINARY_SUBSCR_TUPLE_INT11,798,76011,442,460-3.0%
STORE_ATTR_INSTANCE_VALUE125,204,440121,444,960-3.0%
BUILD_MAP22,153,52021,553,660-2.7%
STORE_NAME99,38096,720-2.7%
MAP_ADD93,92091,660-2.4%
CALL_TYPE_15,603,8405,479,220-2.2%
INTERPRETER_EXIT51,670,56050,660,780-2.0%
STORE_DEREF20,34020,020-1.6%
LOAD_FAST_CHECK106,740105,700-1.0%
SET_FUNCTION_ATTRIBUTE316,940316,620-0.1%
CALL_STR_19,532,0409,522,700-0.1%
STORE_ATTR_WITH_HINT10,151,00010,141,780-0.1%
CALL_INTRINSIC_13,643,6603,640,960-0.1%
LIST_EXTEND3,648,4003,645,700-0.1%
MAKE_FUNCTION484,980484,660-0.1%
RETURN_GENERATOR49,489,20049,488,280-0.0%
END_FOR49,182,62049,182,6200.0%
CALL_FUNCTION_EX15,519,46015,519,4600.0%
POP_EXCEPT8,203,7208,203,7200.0%
PUSH_EXC_INFO8,203,7208,203,7200.0%
CHECK_EXC_MATCH7,728,8007,728,8000.0%
YIELD_VALUE6,607,0806,607,0800.0%
RERAISE1,885,5201,885,5200.0%
RAISE_VARARGS1,567,5601,567,5600.0%
CALL_TUPLE_1310,860310,8600.0%
UNARY_NEGATIVE237,500237,5000.0%
MAKE_CELL217,520217,5200.0%
JUMP_BACKWARD_NO_INTERRUPT201,000201,0000.0%
CALL130,660130,6600.0%
LOAD_SUPER_ATTR_METHOD109,580109,5800.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK94,90094,9000.0%
LOAD_GLOBAL62,34062,3400.0%
RESUME32,20032,2000.0%
IMPORT_NAME25,42025,4200.0%
IMPORT_FROM13,78013,7800.0%
STORE_ATTR_SLOT10,34010,3400.0%
LOAD_ATTR_METHOD_LAZY_DICT9,0009,0000.0%
UNPACK_SEQUENCE7,3407,3400.0%
CALL_KW6,9006,9000.0%
LOAD_BUILD_CLASS6,1006,1000.0%
DELETE_ATTR4,4804,4800.0%
LOAD_LOCALS4,3004,3000.0%
BINARY_OP_ADD_FLOAT3,9003,9000.0%
BINARY_OP_SUBTRACT_FLOAT3,9003,9000.0%
END_SEND1,9601,9600.0%
DICT_UPDATE1,4001,4000.0%
LOAD_ATTR_NONDESCRIPTOR_NO_DICT1,1001,1000.0%
DELETE_FAST1,0401,0400.0%
STORE_GLOBAL4804800.0%
LOAD_SUPER_ATTR_ATTR4404400.0%
SEND2602600.0%
DELETE_NAME2402400.0%
LOAD_FROM_DICT_OR_DEREF2402400.0%
LOAD_SUPER_ATTR1801800.0%
BUILD_SET1601600.0%
WITH_EXCEPT_START1201200.0%
SET_UPDATE40400.0%
ENTER_EXECUTOR195,806,960
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
28,316,06030.2%15,382,38026.5%-45.7%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
65,340,76069.7%42,517,72073.4%-34.9%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
600.0%600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure35,84083.7%32,24082.2%-10.0%
Success6,98016.3%6,98017.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
floor divide3601.0%2000.6%-44.4%
remainder11,56032.3%8,36025.9%-27.7%
and int1,6004.5%1,5204.7%-5.0%
add different types10,88030.4%10,76033.4%-1.1%
add other9,30025.9%9,26028.7%-0.4%
or1,3403.7%1,3404.2%0.0%
multiply different types6601.8%6602.0%0.0%
and different types400.1%400.1%0.0%
true divide other400.1%400.1%0.0%
power200.1%200.1%0.0%
true divide different types200.1%200.1%0.0%
xor200.1%200.1%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
16,325,760100.0%8,592,780100.0%-47.4%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
126,267,68088.0%67,463,10080.9%-46.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
14,177,3409.9%12,822,42015.4%-9.6%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
3,072,3402.1%3,064,5803.7%-0.3%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure22,50024.5%21,58023.8%-4.1%
Success69,22075.5%69,08076.2%-0.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other1,3205.9%1,1205.2%-15.2%
list slice3,96017.6%3,72017.2%-6.1%
out of range12,48055.5%12,08056.0%-3.2%
string slice3,62016.1%3,54016.4%-2.2%
tuple slice9804.4%9804.5%0.0%
buffer slice1400.6%1400.6%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
740,530,58096.9%494,797,74096.3%-33.2%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
23,744,4003.1%18,845,1603.7%-20.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
71,5000.0%71,5000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success509,360100.0%416,900100.0%-18.2%
Failure00.0%00.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
init not simple1,3801,380 / 0 !!1,3801,380 / 0 !!0.0%
init not python500500 / 0 !!500500 / 0 !!0.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3,60052.2%3,60052.2%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
339,9600.7%163,7400.6%-51.8%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
47,411,76094.7%26,551,02092.0%-44.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,312,1004.6%2,122,2007.4%-8.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure20,18062.7%12,70059.5%-37.1%
Success11,98037.3%8,64040.5%-27.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
different types17,82088.3%10,34081.4%-42.0%
list7203.6%7205.7%0.0%
big int6603.3%6605.2%0.0%
other3601.8%3602.8%0.0%
tuple3601.8%3602.8%0.0%
baseobject2001.0%2001.6%0.0%
long float400.2%400.3%0.0%
bytes200.1%200.2%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
72,830,58081.5%9,208,50061.5%-87.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
16,559,90018.5%5,757,26038.4%-65.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure17,94091.2%15,06089.6%-16.1%
Success1,7408.8%1,74010.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
str3,70020.6%2,76018.3%-25.4%
list6,76037.7%5,60037.2%-17.2%
tuple4,56025.4%3,80025.2%-16.7%
other2,92016.3%2,90019.3%-0.7%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
60,513,16013.9%19,618,48010.7%-67.6%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
324,457,32074.5%134,748,28073.5%-58.5%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
50,358,36011.6%28,847,50015.7%-42.7%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure23,6202.4%12,0802.2%-48.9%
Success954,66097.6%548,82097.8%-42.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
ascii string2,78011.8%5804.8%-79.1%
set1,2205.2%2602.2%-78.7%
enumerate7,02029.7%1,94016.1%-72.4%
map3201.4%1801.5%-43.8%
dict items3,76015.9%2,12017.5%-43.6%
bytes2200.9%1401.2%-36.4%
seq iter2,96012.5%2,00016.6%-32.4%
dict keys1,0404.4%8607.1%-17.3%
zip1800.8%1601.3%-11.1%
dict values3,78016.0%3,52029.1%-6.9%
reversed list2000.8%2001.7%0.0%
other1200.5%1201.0%0.0%
string200.1%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
881,120,22059.9%528,248,22059.0%-40.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
145,373,6209.9%87,172,9209.7%-40.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
443,119,32030.1%278,358,08031.1%-37.2%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
4000.0%4000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success9,307,50099.6%6,140,66099.6%-34.0%
Failure40,7200.4%27,0400.4%-33.6%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
class attr simple400.1%800.3%100.0%
overridden4,16010.2%1,8606.9%-55.3%
metaclass attribute16,82041.3%8,44031.2%-49.8%
builtin class method600.1%400.1%-33.3%
method11,92029.3%9,14033.8%-23.3%
out of versions4001.0%3401.3%-15.0%
not managed dict1,0602.6%9403.5%-11.3%
not in dict6801.7%6202.3%-8.8%
class method obj5601.4%6002.2%7.1%
mutable class2,5006.1%2,4609.1%-1.6%
overriding descriptor1,3603.3%1,3605.0%0.0%
module attr not found2600.6%2601.0%0.0%
non overriding descriptor1200.3%1200.4%0.0%
expected error600.1%600.2%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
427,838,860100.0%280,923,400100.0%-34.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
31,5800.0%31,5800.0%0.0%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
1,0800.0%1,0800.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
29,6800.0%29,6800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success31,380100.0%31,380100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_SUPER_ATTR + +
+ specialization stats for LOAD_SUPER_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1000.1%1000.1%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
110,02099.8%110,02099.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success80100.0%80100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### SEND + +
+ specialization stats for SEND family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
9,62097.4%9,02097.2%-6.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1801.8%1801.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success6075.0%6075.0%0.0%
Failure2025.0%2025.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
list20100.0%20100.0%0.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
29,490,78017.9%21,528,14014.1%-27.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
63,475,22038.5%59,913,42039.1%-5.6%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
71,890,56043.6%71,683,66046.8%-0.3%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure35,5802.5%33,6002.4%-5.6%
Success1,365,66097.5%1,361,76097.6%-0.3%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
class attr simple25,12070.6%23,12068.8%-8.0%
not in dict6,40018.0%6,40019.0%0.0%
not in keys2,7007.6%2,7008.0%0.0%
property4601.3%4601.4%0.0%
split dict3801.1%3801.1%0.0%
overridden3601.0%3601.1%0.0%
no dict1600.4%1600.5%0.0%
overriding descriptor200.1%
+ + +
+ +### STORE_SLICE + +
+ specialization stats for STORE_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
356,340100.0%82,000100.0%-77.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
56,879,02089.8%38,033,00086.8%-33.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6,427,42010.2%5,751,72013.1%-10.5%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
2,9000.0%2,9000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure11,38083.4%10,94082.9%-3.9%
Success2,26016.6%2,26017.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
bytearray int7606.7%4203.8%-44.7%
list slice1,90016.7%1,80016.5%-5.3%
py simple7,72067.8%7,72070.6%0.0%
out of range7806.9%7807.1%0.0%
other2201.9%2202.0%0.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
15,323,7404.0%6,782,9002.9%-55.7%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
360,475,32094.7%221,565,94095.6%-38.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4,701,3601.2%3,356,1801.4%-28.6%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success304,54056.4%143,44054.2%-52.9%
Failure235,76043.6%121,08045.8%-48.6%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
number169,80072.0%55,24045.6%-67.5%
mapping6,5602.8%6,4405.3%-1.8%
tuple56,06023.8%56,06046.3%0.0%
dict2,6601.1%2,6602.2%0.0%
other6600.3%6600.5%0.0%
set200.0%200.0%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
64,640,020100.0%22,835,28099.9%-64.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3,6800.0%3,6800.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
4,2400.0%4,2400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success3,740100.0%3,740100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
326,217,5803.0%183,634,7402.6%-43.7%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
3,764,688,56034.7%2,279,771,76032.4%-39.4%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
607,894,7005.6%407,794,5405.8%-32.9%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
6,155,000,58056.7%4,156,203,20059.1%-32.5%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
FOR_ITER60,513,16018.6%19,618,48010.8%-67.6%
CONTAINS_OP16,559,9005.1%5,757,2603.2%-65.2%
BINARY_SLICE16,325,7605.0%8,592,7804.7%-47.4%
BINARY_OP28,316,0608.7%15,382,3808.4%-45.7%
LOAD_ATTR145,373,62044.8%87,172,92047.8%-40.0%
TO_BOOL4,701,3601.4%3,356,1801.8%-28.6%
STORE_ATTR29,490,7809.1%21,528,14011.8%-27.0%
STORE_SUBSCR6,427,4202.0%5,751,7203.2%-10.5%
BINARY_SUBSCR14,177,3404.4%12,822,4207.0%-9.6%
COMPARE_OP2,312,1000.7%2,122,2001.2%-8.2%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
LOAD_ATTR_SLOT47,127,1807.8%21,522,6005.3%-54.3%
FOR_ITER_LIST25,183,3204.1%14,424,4803.5%-42.7%
FOR_ITER_TUPLE25,175,0404.1%14,423,0203.5%-42.7%
LOAD_ATTR_INSTANCE_VALUE177,677,52029.2%105,082,22025.8%-40.9%
LOAD_ATTR_METHOD_WITH_VALUES134,245,78022.1%84,690,72020.8%-36.9%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES68,987,76011.3%56,072,16013.7%-18.7%
CALL_PY_EXACT_ARGS12,891,4802.1%10,742,9802.6%-16.7%
LOAD_ATTR_PROPERTY10,102,7801.7%9,201,8002.3%-8.9%
STORE_ATTR_INSTANCE_VALUE71,886,32011.8%71,679,42017.6%-0.3%
TO_BOOL_NONE8,361,3401.4%
CALL_BOUND_METHOD_EXACT_ARGS3,389,6000.8%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls via PyEval_EvalFrame (api)11,261,7402.4%10,377,7602.2%-7.8%
Calls via PyEval_EvalFrame (function vectorcall)52,643,58011.1%51,633,80010.9%-1.9%
Calls via PyEval_EvalFrame (vector)52,655,48011.1%51,645,70010.9%-1.9%
Calls to PyEval_EvalDefault53,073,40011.2%52,063,62011.0%-1.9%
Calls via PyEval_EvalFrame (total)53,073,40011.2%52,063,62011.0%-1.9%
Calls to Python functions inlined420,790,04088.8%421,799,82089.0%0.2%
Frames pushed419,357,80088.5%419,483,60088.5%0.0%
Calls via PyEval_EvalFrame (generator)417,9200.1%417,9200.1%0.0%
Calls via PyEval_EvalFrame (legacy)5,8000.0%5,8000.0%0.0%
Calls via PyEval_EvalFrame (build class)6,1000.0%6,1000.0%0.0%
Calls via PyEval_EvalFrame (slot)18,257,6203.9%18,257,6203.9%0.0%
Calls via PyEval_EvalFrame (function ex)2,438,7400.5%2,438,7400.5%0.0%
Calls via PyEval_EvalFrame (method)3000.0%3000.0%0.0%
Frame objects created12,844,5202.7%12,844,5202.7%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Allocations to 4 kbytes690,2400.1%1,013,8600.1%46.9%
Method cache dunder misses3,287,1603,920,86519.3%
Interpreter mortal increfs4,298,526,94039.8%5,121,943,92044.7%19.2%
Interpreter mortal decrefs5,414,780,48047.8%6,165,075,56050.0%13.9%
Interpreter immortal decrefs1,785,556,90015.8%2,031,420,64016.5%13.8%
Method cache misses41,327,95436,919,658-10.7%
Method cache collisions43,805,79940,030,334-8.6%
Interpreter immortal increfs1,794,438,38016.6%1,659,981,62014.5%-7.5%
Method cache dunder hits264,845,560255,741,995-3.4%
Mortal decrefs2,321,904,00820.5%2,359,367,94419.1%1.6%
Method cache hits631,603,706621,538,622-1.6%
Mortal increfs2,659,856,31024.6%2,623,722,17122.9%-1.4%
Immortal decrefs1,794,219,96215.9%1,772,718,98214.4%-1.2%
Immortal increfs2,060,622,85919.1%2,041,967,18517.8%-0.9%
Allocations over 4 kbytes464,4400.0%468,1200.0%0.8%
Frees806,503,043807,020,6400.1%
Allocations765,785,18070.7%766,233,22070.8%0.1%
Allocations from freelist316,836,36029.3%316,689,58029.2%-0.0%
Frees to freelist316,854,300316,716,740-0.0%
Allocations to 512 bytes764,630,50070.6%764,751,24070.6%0.0%
Inline values14,081,72014,081,7200.0%
Materialize dict (on request)35,4000.3%35,4000.3%0.0%
Materialize dict (new key)161,0401.1%161,0401.1%0.0%
Materialize dict (too big)3,9200.0%3,9200.0%0.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
134,72093,390,1401,866,233,60034,74093,453,0201,854,296,900
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
06060 / 0 !!
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
06060 / 0 !!
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-dulwich_log-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-dulwich_log-vs-base.md new file mode 100644 index 00000000..f956ccf5 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-dulwich_log-vs-base.md @@ -0,0 +1,3345 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD3,760,2204,460-99.9%
BUILD_MAP248,6003,080-98.8%
CALL_ALLOC_AND_ENTER_INIT248,5204,960-98.0%
FOR_ITER_RANGE5,340520-90.3%
TO_BOOL1,754,040253,820-85.5%
FOR_ITER_GEN1,503,660251,720-83.3%
LIST_APPEND28060-78.6%
STORE_FAST_LOAD_FAST30080-73.3%
FOR_ITER2,504,620817,160-67.4%
CALL_BOUND_METHOD_EXACT_ARGS12040-66.7%
LOAD_ATTR_METHOD_LAZY_DICT750,320254,180-66.1%
STORE_ATTR_INSTANCE_VALUE2,736,6601,022,040-62.7%
JUMP_FORWARD1,498,740573,100-61.8%
CALL_LIST_APPEND1,257,300506,140-59.7%
CALL_METHOD_DESCRIPTOR_NOARGS748,760313,620-58.1%
CALL_LEN2,999,0401,381,340-53.9%
CALL_METHOD_DESCRIPTOR_FAST4,253,0401,999,520-53.0%
FOR_ITER_LIST498,760248,860-50.1%
FOR_ITER_TUPLE497,140248,420-50.0%
LOAD_FAST_AND_CLEAR12060-50.0%
UNPACK_SEQUENCE_LIST1,503,640755,300-49.8%
PUSH_NULL4,003,9802,063,460-48.5%
TO_BOOL_INT1,057,260557,600-47.3%
BINARY_SUBSCR4,008,1802,255,100-43.7%
TO_BOOL_BOOL8,736,7805,256,280-39.8%
COMPARE_OP_INT4,750,2402,884,280-39.3%
BUILD_TUPLE4,504,2402,757,080-38.8%
POP_JUMP_IF_FALSE20,997,98013,651,260-35.0%
POP_JUMP_IF_NONE5,736,7003,742,180-34.8%
CALL_KW_PY750,140501,880-33.1%
CALL_NON_PY_GENERAL1,501,9001,005,240-33.1%
LOAD_DEREF3,728,6002,505,840-32.8%
LOAD_SPECIAL400280-30.0%
CALL_BUILTIN_FAST1,751,4601,248,060-28.7%
POP_JUMP_IF_TRUE4,301,1603,118,580-27.5%
POP_TOP6,938,5005,199,400-25.1%
LOAD_CONST39,681,12030,299,240-23.6%
LOAD_FAST102,979,32079,019,920-23.3%
LOAD_ATTR_METHOD_NO_DICT16,965,58013,024,740-23.2%
LOAD_FAST_LOAD_FAST11,859,5009,111,520-23.2%
STORE_FAST27,662,98021,624,920-21.8%
CALL_BUILTIN_O1,999,3801,563,160-21.8%
CALL_BUILTIN_FAST_WITH_KEYWORDS1,245,500997,220-19.9%
COMPARE_OP6,460,9805,277,260-18.3%
RESUME_CHECK21,309,24017,444,680-18.1%
NOP3,498,2602,872,180-17.9%
LOAD_GLOBAL_BUILTIN10,490,6608,622,620-17.8%
BINARY_OP3,005,1402,505,240-16.6%
CONTAINS_OP_SET1,491,8201,248,260-16.3%
LOAD_ATTR_MODULE2,743,7002,304,140-16.0%
LOAD_GLOBAL_MODULE14,503,24012,209,820-15.8%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS4,983,9204,235,580-15.0%
STORE_FAST_STORE_FAST5,006,7604,258,360-14.9%
CALL_PY_EXACT_ARGS11,975,56010,222,120-14.6%
LOAD_ATTR_METHOD_WITH_VALUES3,990,6803,426,540-14.1%
LOAD_ATTR_INSTANCE_VALUE15,152,94013,117,380-13.4%
LOAD_ATTR_SLOT9,459,5008,218,200-13.1%
LOAD_FAST_CHECK180160-11.1%
GET_ITER1,748,3001,561,880-10.7%
RETURN_VALUE16,559,92014,936,040-9.8%
DICT_MERGE220200-9.1%
BUILD_LIST3,002,8402,754,520-8.3%
POP_JUMP_IF_NOT_NONE2,745,9602,560,840-6.7%
LOAD_ATTR_PROPERTY2,987,3602,800,900-6.2%
BINARY_OP_ADD_INT4,962,8204,700,160-5.3%
STORE_ATTR_SLOT10,506,78010,258,520-2.4%
BINARY_SUBSCR_TUPLE_INT255,400250,600-1.9%
BINARY_SUBSCR_GETITEM500,500495,540-1.0%
BINARY_OP_MULTIPLY_INT3,110,5203,100,920-0.3%
BINARY_SLICE2,105,1202,100,320-0.2%
TO_BOOL_STR248,760248,520-0.1%
SWAP499,580499,220-0.1%
CALL_METHOD_DESCRIPTOR_O1,742,2401,741,620-0.0%
BINARY_OP_ADD_UNICODE496,880496,800-0.0%
BINARY_OP_INPLACE_ADD_UNICODE248,380248,360-0.0%
CALL_PY_GENERAL997,200997,120-0.0%
LOAD_ATTR760,140760,080-0.0%
COPY1,556,9201,556,860-0.0%
RETURN_CONST3,496,3403,496,240-0.0%
UNPACK_SEQUENCE_TWO_TUPLE4,003,1404,003,080-0.0%
INTERPRETER_EXIT2,596,7802,596,7800.0%
CALL_BUILTIN_CLASS2,498,7402,498,7400.0%
YIELD_VALUE1,253,4801,253,4800.0%
CONTAINS_OP1,252,5401,252,5400.0%
CALL_ISINSTANCE999,440999,4400.0%
BINARY_SUBSCR_LIST_INT999,120999,1200.0%
UNPACK_SEQUENCE_TUPLE750,740750,7400.0%
COPY_FREE_VARS747,140747,1400.0%
CHECK_EXC_MATCH746,580746,5800.0%
POP_EXCEPT746,580746,5800.0%
PUSH_EXC_INFO746,580746,5800.0%
UNARY_NEGATIVE555,380555,3800.0%
BINARY_SUBSCR_DICT498,720498,7200.0%
MAKE_FUNCTION250,900250,9000.0%
RETURN_GENERATOR250,280250,2800.0%
LOAD_SUPER_ATTR_METHOD250,260250,2600.0%
END_FOR250,240250,2400.0%
MAKE_CELL249,560249,5600.0%
BINARY_OP_SUBTRACT_INT249,140249,1400.0%
EXIT_INIT_CHECK248,520248,5200.0%
TO_BOOL_LIST248,500248,5000.0%
EXTENDED_ARG248,480248,4800.0%
CALL_KW_NON_PY248,360248,3600.0%
CALL6,5206,5200.0%
LOAD_GLOBAL5,3205,3200.0%
STORE_ATTR4,9204,9200.0%
RESUME1,9001,9000.0%
IS_OP1,1001,1000.0%
STORE_NAME1,0201,0200.0%
UNPACK_SEQUENCE9409400.0%
CALL_KW3803800.0%
TO_BOOL_NONE3403400.0%
SET_FUNCTION_ATTRIBUTE3203200.0%
CALL_FUNCTION_EX3003000.0%
IMPORT_FROM3003000.0%
IMPORT_NAME2802800.0%
STORE_SUBSCR_DICT2602600.0%
LOAD_NAME2202200.0%
COMPARE_OP_STR2202200.0%
STORE_SUBSCR1801800.0%
CALL_INTRINSIC_11801800.0%
LIST_EXTEND1801800.0%
CONTAINS_OP_DICT80800.0%
LOAD_BUILD_CLASS60600.0%
LOAD_LOCALS60600.0%
LOAD_SUPER_ATTR60600.0%
STORE_DEREF60600.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
CALL_STR_160600.0%
JUMP_BACKWARD_NO_INTERRUPT40400.0%
DELETE_SUBSCR20200.0%
CALL_TUPLE_120200.0%
CALL_TYPE_120200.0%
COMPARE_OP_FLOAT20200.0%
ENTER_EXECUTOR2,691,780
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3,001,92024.9%2,502,28022.1%-16.6%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
9,067,80075.1%8,795,44077.8%-3.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure2,64082.0%2,38080.4%-9.8%
Success58018.0%58019.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
and int1,44054.5%1,18049.6%-18.1%
remainder32012.1%32013.4%0.0%
true divide other32012.1%32013.4%0.0%
lshift30011.4%30012.6%0.0%
rshift2609.8%26010.9%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,105,120100.0%2,100,320100.0%-0.2%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4,005,34064.0%2,252,96050.1%-43.8%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,253,74036.0%2,243,98049.9%-0.4%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure2,62092.3%1,92089.7%-26.7%
Success2207.7%22010.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
out of range36013.7%1005.2%-72.2%
buffer slice1,66063.4%1,22063.5%-26.5%
buffer int32012.2%32016.7%0.0%
list slice28010.7%28014.6%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1600.0%1200.0%-25.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
36,703,080100.0%27,711,580100.0%-24.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3,8800.0%3,8800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success2,780100.0%2,780100.0%0.0%
Failure00.0%00.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
init not inline values6060 / 0 !!6060 / 0 !!0.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
24063.2%24063.2%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
4,750,48042.4%2,884,52035.3%-39.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6,456,86057.6%5,273,44064.6%-18.3%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure3,74090.8%3,44090.1%-8.0%
Success3809.2%3809.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
bytes2,52067.4%2,22064.5%-11.9%
different types1,22032.6%1,22035.5%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,491,90054.4%1,248,34049.9%-16.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,251,18045.6%1,251,18050.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1208.8%1208.8%0.0%
Failure1,24091.2%1,24091.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple84067.7%84067.7%0.0%
other32025.8%32025.8%0.0%
str806.5%806.5%0.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,504,90050.0%749,52047.8%-70.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,502,82050.0%815,92052.1%-67.4%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,68093.3%1,12090.3%-33.3%
Success1206.7%1209.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
callable26015.5%605.4%-76.9%
other50029.8%26023.2%-48.0%
dict values26015.5%20017.9%-23.1%
enumerate32019.0%26023.2%-18.8%
reversed list26015.5%26023.2%0.0%
itertools603.6%605.4%0.0%
set201.2%201.8%0.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
52,049,94098.6%43,145,94098.3%-17.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
755,7601.4%755,7001.7%-0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1400.0%1400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success3,54080.8%3,54080.8%0.0%
Failure84019.2%84019.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
method58069.0%58069.0%0.0%
non overriding descriptor26031.0%26031.0%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
24,993,880100.0%20,832,420100.0%-16.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3,1400.0%3,1400.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
200.0%200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success2,180100.0%2,180100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_SUPER_ATTR + +
+ specialization stats for LOAD_SUPER_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.0%400.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
250,260100.0%250,260100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
13,243,440100.0%11,280,560100.0%-14.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,9000.0%2,9000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success2,020100.0%2,020100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
12027.3%12027.3%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
26059.1%26059.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success4066.7%4066.7%0.0%
Failure2033.3%2033.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
py simple20100.0%20100.0%0.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,752,18014.5%252,6603.8%-85.6%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
10,291,60085.4%6,311,20096.1%-38.7%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
400.0%400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,22065.6%52044.8%-57.4%
Success64034.4%64055.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
bytes96078.7%26050.0%-72.9%
sequence26021.3%26050.0%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6,257,520100.0%5,509,120100.0%-12.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5200.0%5200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success420100.0%420100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
21,869,0804.4%15,239,8403.9%-30.3%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
284,914,56057.5%219,759,34056.9%-22.9%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
188,665,52038.1%151,160,36039.1%-19.9%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
3600.0%3400.0%-5.6%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
TO_BOOL1,752,1808.0%252,6601.7%-85.6%
FOR_ITER2,502,82011.5%815,9205.4%-67.4%
BINARY_SUBSCR4,005,34018.3%2,252,96014.8%-43.8%
COMPARE_OP6,456,86029.6%5,273,44034.7%-18.3%
BINARY_OP3,001,92013.7%2,502,28016.4%-16.6%
BINARY_SLICE2,105,1209.6%2,100,32013.8%-0.2%
LOAD_ATTR755,7603.5%755,7005.0%-0.0%
CONTAINS_OP1,251,1805.7%1,251,1808.2%0.0%
CALL3,8800.0%3,8800.0%0.0%
LOAD_GLOBAL3,1400.0%3,1400.0%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
LOAD_ATTR_MODULE14038.9%14038.9%0.0%
CALL_BOUND_METHOD_EXACT_ARGS6016.7%
CALL_BUILTIN_FAST_WITH_KEYWORDS6016.7%6016.7%0.0%
TO_BOOL_NONE4011.1%4011.1%0.0%
CALL_METHOD_DESCRIPTOR_NOARGS205.6%205.6%0.0%
CALL_METHOD_DESCRIPTOR_O205.6%205.6%0.0%
LOAD_GLOBAL_BUILTIN205.6%205.6%0.0%
CACHE00.0%00.0%
BINARY_OP_INPLACE_ADD_UNICODE00.0%
CHECK_EXC_MATCH00.0%
RESUME205.6%
CALL_PY_EXACT_ARGS205.6%
RESUME_CHECK205.6%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault2,596,80012.0%2,596,80012.0%0.0%
Calls to Python functions inlined18,964,62088.0%18,964,62088.0%0.0%
Calls via PyEval_EvalFrame (total)2,596,80012.0%2,596,80012.0%0.0%
Calls via PyEval_EvalFrame (vector)2,596,70012.0%2,596,70012.0%0.0%
Calls via PyEval_EvalFrame (generator)1000.0%1000.0%0.0%
Calls via PyEval_EvalFrame (legacy)200.0%200.0%0.0%
Calls via PyEval_EvalFrame (function vectorcall)2,596,62012.0%2,596,62012.0%0.0%
Calls via PyEval_EvalFrame (build class)600.0%600.0%0.0%
Calls via PyEval_EvalFrame (slot)249,4801.2%249,4801.2%0.0%
Calls via PyEval_EvalFrame (function ex)1000.0%1000.0%0.0%
Calls via PyEval_EvalFrame (api)5400.0%5400.0%0.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created996,5004.6%996,5004.6%0.0%
Frames pushed20,306,18094.2%20,306,18094.2%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache dunder misses150,6523,392-97.7%
Method cache collisions401,640251,717-37.3%
Method cache dunder hits1,851,3081,998,1287.9%
Interpreter immortal increfs71,387,26017.9%66,774,32016.7%-6.5%
Interpreter immortal decrefs76,022,32017.5%78,714,36017.8%3.5%
Interpreter mortal increfs230,925,70058.0%237,085,80059.3%2.7%
Interpreter mortal decrefs253,033,36058.3%258,700,48058.5%2.2%
Method cache misses254,249252,310-0.8%
Immortal decrefs38,669,2688.9%38,444,1398.7%-0.6%
Mortal decrefs66,215,13015.3%66,540,51515.0%0.5%
Mortal increfs37,915,4349.5%37,746,1099.4%-0.4%
Immortal increfs58,254,56614.6%58,080,26014.5%-0.3%
Allocations to 4 kbytes263,5000.5%263,7400.5%0.1%
Method cache hits2,509,4512,511,3900.1%
Frees38,871,45738,873,0680.0%
Allocations over 4 kbytes500,8000.9%500,8200.9%0.0%
Allocations38,182,30469.7%38,182,68869.7%0.0%
Frees to freelist16,606,42016,606,4800.0%
Allocations from freelist16,606,98030.3%16,607,04030.3%0.0%
Allocations to 512 bytes37,418,00468.3%37,418,12868.3%0.0%
Inline values497,220497,2200.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-fannkuch-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-fannkuch-vs-base.md new file mode 100644 index 00000000..358add48 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-fannkuch-vs-base.md @@ -0,0 +1,1845 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD209,233,9201,340-100.0%
NOP29,030,480460-100.0%
TO_BOOL_INT161,481,98010,360-100.0%
STORE_SLICE138,499,60010,340-100.0%
BUILD_SLICE138,499,60010,340-100.0%
BINARY_SUBSCR161,522,06020,980-100.0%
LOAD_FAST978,603,520130,140-100.0%
LOAD_CONST1,220,091,360187,020-100.0%
POP_JUMP_IF_FALSE388,946,80065,240-100.0%
BINARY_OP_ADD_INT297,851,20050,280-100.0%
BINARY_SUBSCR_LIST_INT316,081,72059,240-100.0%
COMPARE_OP_INT227,464,66044,640-100.0%
STORE_FAST387,652,56085,600-100.0%
LOAD_FAST_LOAD_FAST407,668,16095,440-100.0%
BINARY_OP_SUBTRACT_INT91,586,32025,060-100.0%
STORE_SUBSCR_LIST_INT70,734,28022,100-100.0%
CALL_BUILTIN_FAST99,764,60038,400-100.0%
COPY99,764,64038,440-100.0%
SWAP99,764,64038,440-100.0%
POP_TOP49,882,48019,380-100.0%
PUSH_NULL99,765,04038,840-100.0%
CALL4804800.0%
BINARY_OP3603600.0%
CALL_BUILTIN_CLASS3603600.0%
LOAD_GLOBAL_BUILTIN3603600.0%
LOAD_GLOBAL3203200.0%
COMPARE_OP2802800.0%
LOAD_ATTR2802800.0%
CALL_NON_PY_GENERAL2402400.0%
RETURN_VALUE1601600.0%
LOAD_DEREF1601600.0%
LOAD_ATTR_MODULE1201200.0%
LOAD_GLOBAL_MODULE1201200.0%
RESUME_CHECK1201200.0%
INTERPRETER_EXIT80800.0%
STORE_SUBSCR80800.0%
CALL_FUNCTION_EX80800.0%
COPY_FREE_VARS80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
TO_BOOL40400.0%
RESUME40400.0%
ENTER_EXECUTOR104,220
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
389,437,580100.0%75,40099.5%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1800.0%1800.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success180100.0%180100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
161,482,12033.8%20,54025.6%-100.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
316,081,72066.2%59,24073.8%-100.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure39,82099.7%32072.7%-99.2%
Success1200.3%12027.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
list slice39,820100.0%320100.0%-99.2%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
99,764,960100.0%38,76098.8%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2400.0%2400.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success240100.0%240100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
227,464,660100.0%44,64099.4%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1400.0%1400.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success140100.0%140100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
20050.0%20050.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
12030.0%12030.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success4050.0%4050.0%0.0%
Failure4050.0%4050.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
method40100.0%40100.0%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
16020.0%16020.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
48060.0%48060.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success160100.0%160100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_SLICE + +
+ specialization stats for STORE_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
138,499,600100.0%10,340100.0%-100.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
70,734,280100.0%22,10099.6%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.0%400.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
161,481,980100.0%10,36099.6%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.0%200.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
300,023,5005.3%33,1603.0%-100.0%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
4,108,903,80072.4%815,50074.1%-100.0%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
1,264,966,14022.3%251,46022.9%-100.0%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
00.0%00.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
STORE_SLICE138,499,60046.2%10,34032.5%-100.0%
BINARY_SUBSCR161,482,12053.8%20,54064.5%-100.0%
CALL2400.0%2400.8%0.0%
LOAD_ATTR2000.0%2000.6%0.0%
BINARY_OP1800.0%1800.6%0.0%
LOAD_GLOBAL1600.0%1600.5%0.0%
COMPARE_OP1400.0%1400.4%0.0%
STORE_SUBSCR400.0%400.1%0.0%
TO_BOOL200.0%200.1%0.0%
BINARY_SLICE00.0%00.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault8050.0%8050.0%0.0%
Calls to Python functions inlined8050.0%8050.0%0.0%
Calls via PyEval_EvalFrame (total)8050.0%8050.0%0.0%
Calls via PyEval_EvalFrame (vector)8050.0%8050.0%0.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)8050.0%8050.0%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)8050.0%8050.0%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed160100.0%160100.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Interpreter immortal increfs2,620,332,64040.3%1,423,400,62026.0%-45.7%
Method cache misses4431-29.5%
Method cache collisions4431-29.5%
Interpreter mortal increfs809,546,24012.5%996,508,28018.2%23.1%
Interpreter mortal decrefs1,248,028,20017.0%1,434,990,02019.0%15.0%
Method cache hits1962096.6%
Mortal decrefs276,999,9013.8%277,010,7603.7%0.0%
Interpreter immortal decrefs2,809,553,82038.2%2,809,658,18037.3%0.0%
Mortal increfs276,999,6804.3%277,004,9805.1%0.0%
Frees175,998,080176,000,7000.0%
Allocations from freelist438,481,36071.4%438,484,38071.4%0.0%
Frees to freelist438,481,540438,484,5600.0%
Allocations175,998,34028.6%175,999,36028.6%0.0%
Allocations to 512 bytes175,998,34028.6%175,998,78028.6%0.0%
Immortal increfs2,787,944,82842.9%2,787,949,26250.8%0.0%
Immortal decrefs3,015,063,36741.0%3,015,066,94240.0%0.0%
Allocations to 4 kbytes00.0%5800.0%580 / 0 !!
Allocations over 4 kbytes00.0%00.0%
Inline values00
Materialize dict (on request)00
Materialize dict (new key)00
Materialize dict (too big)00
Materialize dict (str subclass)00
Method cache dunder hits00
Method cache dunder misses00
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-float-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-float-vs-base.md new file mode 100644 index 00000000..0385ceff --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-float-vs-base.md @@ -0,0 +1,2079 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
BINARY_OP_ADD_FLOAT31,999,960880-100.0%
STORE_SUBSCR_LIST_INT15,999,980440-100.0%
SWAP48,000,0001,380-100.0%
FOR_ITER_LIST32,000,1201,020-100.0%
LOAD_ATTR_METHOD_NO_DICT31,999,8001,020-100.0%
JUMP_BACKWARD48,000,0001,680-100.0%
CALL_PY_EXACT_ARGS31,999,9401,160-100.0%
FOR_ITER_RANGE16,000,360660-100.0%
CALL_NON_PY_GENERAL16,000,300760-100.0%
POP_TOP16,000,2401,180-100.0%
JUMP_FORWARD31,986,88011,060-100.0%
LOAD_ATTR_SLOT239,998,22088,460-100.0%
COMPARE_OP_FLOAT47,999,46021,900-100.0%
POP_JUMP_IF_FALSE47,999,60022,040-100.0%
LOAD_FAST495,999,52080,157,100-83.8%
LOAD_FAST_LOAD_FAST80,000,00016,001,840-80.0%
STORE_FAST144,000,56029,996,780-79.2%
BINARY_OP_MULTIPLY_FLOAT63,999,92016,001,300-75.0%
COPY64,000,00016,001,380-75.0%
RESUME_CHECK48,000,12016,001,340-66.7%
STORE_ATTR_SLOT143,999,32048,043,300-66.6%
BINARY_OP80,020,98032,010,240-60.0%
RETURN_CONST32,000,00016,000,460-50.0%
LOAD_GLOBAL_MODULE64,000,18032,001,100-50.0%
CALL_BUILTIN_O47,999,94032,000,400-33.3%
RETURN_VALUE16,000,24013,992,940-12.5%
LOAD_CONST32,000,56032,000,5600.0%
INTERPRETER_EXIT16,000,16016,000,1600.0%
LOAD_ATTR8408400.0%
GET_ITER5605600.0%
CALL5205200.0%
PUSH_NULL4804800.0%
STORE_ATTR4004000.0%
LOAD_GLOBAL3603600.0%
BINARY_SUBSCR2402400.0%
CALL_BUILTIN_CLASS2002000.0%
LOAD_GLOBAL_BUILTIN2002000.0%
BUILD_LIST1601600.0%
COMPARE_OP1601600.0%
FOR_ITER1601600.0%
LOAD_DEREF1601600.0%
BINARY_SUBSCR_LIST_INT1401400.0%
RESUME1201200.0%
LOAD_ATTR_MODULE1201200.0%
NOP80800.0%
CALL_FUNCTION_EX80800.0%
COPY_FREE_VARS80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
COMPARE_OP_INT60600.0%
STORE_SUBSCR40400.0%
ENTER_EXECUTOR13,992,080
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
95,999,94054.5%16,002,24033.3%-83.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
80,000,30045.4%32,001,68066.7%-60.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure20,54099.3%8,42098.4%-59.0%
Success1400.7%1401.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
true divide float12,30059.9%1802.1%-98.5%
multiply different types4,14020.2%4,14049.2%0.0%
true divide different types4,10020.0%4,10048.7%0.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
18047.4%18047.4%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
14036.8%14036.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success2033.3%2033.3%0.0%
Failure4066.7%4066.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
list slice40100.0%40100.0%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
80,000,080100.0%32,001,760100.0%-60.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2600.0%2600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success260100.0%260100.0%0.0%
Failure00.0%00.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
init not inline values2020 / 0 !!2020 / 0 !!0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
47,999,520100.0%21,96099.3%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
800.0%800.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success80100.0%80100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
48,000,480100.0%1,68091.3%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
800.0%804.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success80100.0%80100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
271,998,140100.0%89,60099.1%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4200.0%4200.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success420100.0%420100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
64,000,380100.0%32,001,300100.0%-50.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1800.0%1800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success180100.0%180100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
143,999,320100.0%48,043,300100.0%-66.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2000.0%2000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success200100.0%200100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
15,999,980100.0%44091.7%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.0%204.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
831,990,54041.9%144,156,66035.1%-82.7%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
1,071,989,48054.0%234,182,36057.1%-78.2%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
80,023,7004.0%32,012,9607.8%-60.0%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
7,8600.0%7,8600.0%0.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
BINARY_OP80,000,300100.0%32,001,680100.0%-60.0%
LOAD_ATTR4200.0%4200.0%0.0%
CALL2600.0%2600.0%0.0%
STORE_ATTR2000.0%2000.0%0.0%
BINARY_SUBSCR1800.0%1800.0%0.0%
LOAD_GLOBAL1800.0%1800.0%0.0%
COMPARE_OP800.0%800.0%0.0%
FOR_ITER800.0%800.0%0.0%
STORE_SUBSCR200.0%200.0%0.0%
BINARY_SLICE00.0%00.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
RESUME7,86050.0%7,86050.0%0.0%
RESUME_CHECK7,86050.0%7,86050.0%0.0%
CACHE00.0%00.0%
GET_ITER00.0%00.0%
INTERPRETER_EXIT00.0%00.0%
NOP00.0%00.0%
POP_TOP00.0%00.0%
PUSH_NULL00.0%00.0%
RETURN_VALUE00.0%00.0%
BUILD_LIST00.0%00.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault16,000,16033.3%16,000,16033.3%0.0%
Calls to Python functions inlined32,000,08066.7%32,000,08066.7%0.0%
Calls via PyEval_EvalFrame (total)16,000,16033.3%16,000,16033.3%0.0%
Calls via PyEval_EvalFrame (vector)16,000,16033.3%16,000,16033.3%0.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)16,000,16033.3%16,000,16033.3%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)800.0%800.0%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed48,000,240100.0%48,000,240100.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Interpreter immortal increfs64,206,4404.7%48,206,9003.5%-24.9%
Interpreter immortal decrefs64,247,7404.0%78,240,1604.8%21.8%
Method cache collisions1041149.6%
Method cache misses1211242.5%
Method cache dunder misses4140-2.4%
Interpreter mortal decrefs1,183,754,52074.0%1,211,718,40073.8%2.4%
Interpreter mortal increfs1,183,793,06086.0%1,211,756,78087.3%2.4%
Method cache hits1,0791,076-0.3%
Mortal increfs63,962,9814.6%63,968,8204.6%0.0%
Immortal decrefs16,053,6601.0%16,054,4191.0%0.0%
Frees79,963,36279,966,7470.0%
Mortal decrefs335,989,22421.0%335,998,46920.5%0.0%
Immortal increfs64,004,6234.7%64,005,6084.6%0.0%
Allocations79,962,70029.4%79,963,52029.4%0.0%
Frees to freelist192,017,140192,017,8200.0%
Allocations from freelist192,014,04070.6%192,014,66070.6%0.0%
Allocations to 512 bytes79,962,38029.4%79,962,56029.4%0.0%
Method cache dunder hits15,999,95915,999,9600.0%
Allocations to 4 kbytes00.0%6400.0%640 / 0 !!
Allocations over 4 kbytes3200.0%3200.0%0.0%
Inline values00
Materialize dict (on request)00
Materialize dict (new key)00
Materialize dict (too big)00
Materialize dict (str subclass)00
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
17,8603,840258,358,0407,8603,960258,361,700
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-gc_collect-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-gc_collect-vs-base.md new file mode 100644 index 00000000..a8907826 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-gc_collect-vs-base.md @@ -0,0 +1,1841 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD21,514,240960-100.0%
LOAD_CONST44,042,3201,058,800-97.6%
BUILD_LIST10,320460-95.5%
FOR_ITER_RANGE22,548,5001,025,300-95.5%
CALL_ALLOC_AND_ENTER_INIT21,503,9601,024,940-95.2%
LOAD_GLOBAL_MODULE22,579,1002,080,360-90.8%
STORE_ATTR_INSTANCE_VALUE86,015,92040,986,920-52.3%
RESUME_CHECK44,042,28021,517,920-51.1%
CALL_BUILTIN_FAST_WITH_KEYWORDS20,44010,580-48.2%
LOAD_FAST111,677,76066,629,920-40.3%
STORE_FAST64,573,52044,074,780-31.7%
LOAD_ATTR_MODULE40,94031,080-24.1%
PUSH_NULL41,20031,340-23.9%
LOAD_ATTR_METHOD_WITH_VALUES21,503,96020,481,220-4.8%
LOAD_ATTR_INSTANCE_VALUE21,503,98020,481,240-4.8%
LOAD_FAST_LOAD_FAST44,052,48041,997,140-4.7%
CALL_PY_EXACT_ARGS22,538,16021,505,560-4.6%
POP_TOP22,538,34021,508,340-4.6%
RETURN_CONST44,032,00043,009,260-2.3%
CALL_BUILTIN_CLASS1,034,2601,024,400-1.0%
LOAD_GLOBAL_BUILTIN1,034,2601,024,400-1.0%
GET_ITER1,034,3201,024,460-1.0%
RETURN_VALUE21,514,36021,514,3600.0%
EXIT_INIT_CHECK21,503,96021,503,9600.0%
POP_JUMP_IF_FALSE1,034,2401,034,2400.0%
COMPARE_OP_INT1,034,2001,034,2000.0%
CALL_LIST_APPEND1,023,9801,023,9800.0%
LOAD_ATTR_METHOD_NO_DICT1,023,9801,023,9800.0%
CALL_NON_PY_GENERAL20,50020,5000.0%
DELETE_FAST10,24010,2400.0%
POP_JUMP_IF_NOT_NONE10,24010,2400.0%
BINARY_OP_ADD_FLOAT10,22010,2200.0%
BINARY_OP_ADD_INT10,22010,2200.0%
BINARY_OP_MULTIPLY_INT10,22010,2200.0%
BINARY_OP_SUBTRACT_FLOAT10,22010,2200.0%
CALL6006000.0%
LOAD_GLOBAL4804800.0%
LOAD_ATTR3603600.0%
LOAD_DEREF2402400.0%
BINARY_OP1601600.0%
CALL_FUNCTION_EX1601600.0%
STORE_ATTR1601600.0%
RESUME1201200.0%
FOR_ITER1201200.0%
NOP80800.0%
CALL_INTRINSIC_180800.0%
COMPARE_OP80800.0%
COPY_FREE_VARS80800.0%
LIST_EXTEND80800.0%
INTERPRETER_EXIT40400.0%
ENTER_EXECUTOR22,548,240
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
800.2%800.2%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
40,82099.5%40,82099.5%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
600.1%600.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success80100.0%80100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
46,120,800100.0%24,589,460100.0%-46.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3000.0%3000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success300100.0%300100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.0%400.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,034,200100.0%1,034,200100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
22,548,500100.0%1,025,300100.0%-95.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
600.0%600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success60100.0%60100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
44,072,860100.0%42,017,520100.0%-4.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1800.0%1800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success180100.0%180100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
23,613,360100.0%3,104,760100.0%-86.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2400.0%2400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success240100.0%240100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
86,015,920100.0%40,986,920100.0%-52.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
800.0%800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success80100.0%80100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
267,499,00040.2%134,326,92032.0%-49.8%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
397,590,42059.8%285,957,62068.0%-28.1%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
10,3000.0%10,5400.0%2.3%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
1,9600.0%1,9600.0%0.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
CALL30030.6%30030.6%0.0%
LOAD_GLOBAL24024.5%24024.5%0.0%
LOAD_ATTR18018.4%18018.4%0.0%
BINARY_OP808.2%808.2%0.0%
STORE_ATTR808.2%808.2%0.0%
FOR_ITER606.1%606.1%0.0%
COMPARE_OP404.1%404.1%0.0%
BINARY_SLICE00.0%00.0%
STORE_SLICE00.0%00.0%
CACHE00.0%00.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
RESUME10,24049.9%10,48049.9%2.3%
RESUME_CHECK10,24049.9%10,48049.9%2.3%
BINARY_OP_ADD_FLOAT600.3%600.3%0.0%
CACHE00.0%00.0%
EXIT_INIT_CHECK00.0%00.0%
GET_ITER00.0%00.0%
INTERPRETER_EXIT00.0%00.0%
NOP00.0%00.0%
POP_TOP00.0%00.0%
PUSH_NULL00.0%00.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault400.0%400.0%0.0%
Calls to Python functions inlined44,042,360100.0%44,042,360100.0%0.0%
Calls via PyEval_EvalFrame (total)400.0%400.0%0.0%
Calls via PyEval_EvalFrame (vector)400.0%400.0%0.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)400.0%400.0%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)1600.0%1600.0%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed65,546,360148.8%65,546,360148.8%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Interpreter immortal increfs113,736,30022.3%69,720,18013.7%-38.7%
Method cache collisions7865-16.7%
Interpreter immortal decrefs135,271,10024.4%157,808,92025.4%16.7%
Interpreter mortal decrefs329,934,18059.4%373,971,62060.1%13.3%
Interpreter mortal increfs350,362,12068.8%394,399,48077.4%12.6%
Method cache misses8375-9.6%
Method cache hits3373452.4%
Frees to freelist32,06032,5001.4%
Immortal increfs3,216,7260.6%3,217,3500.6%0.0%
Immortal decrefs4,184,9210.8%4,185,4290.7%0.0%
Frees23,705,44223,707,6610.0%
Mortal increfs41,986,2008.2%41,989,9208.2%0.0%
Mortal decrefs86,111,12515.5%86,117,02113.8%0.0%
Allocations23,685,560100.0%23,686,120100.0%0.0%
Allocations to 512 bytes23,685,560100.0%23,686,040100.0%0.0%
Allocations from freelist600.0%600.0%0.0%
Allocations to 4 kbytes00.0%800.0%80 / 0 !!
Allocations over 4 kbytes00.0%00.0%
Inline values21,504,00021,504,0000.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
Method cache dunder hits40400.0%
Method cache dunder misses40400.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
110,2400124,805,12010,2400124,812,960
220,48021,507,8402,577,025,08020,48021,507,8402,578,507,960
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-gc_traversal-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-gc_traversal-vs-base.md new file mode 100644 index 00000000..d67f0cf8 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-gc_traversal-vs-base.md @@ -0,0 +1,1798 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
STORE_SUBSCR_LIST_INT39,959,980480-100.0%
LOAD_FAST_LOAD_FAST39,960,000500-100.0%
JUMP_BACKWARD40,045,1201,020-100.0%
FOR_ITER_RANGE40,125,2201,380-100.0%
STORE_FAST40,220,7204,460-100.0%
LOAD_FAST40,221,0404,780-100.0%
CALL_BUILTIN_CLASS80,100480-99.4%
LOAD_GLOBAL_BUILTIN80,100480-99.4%
BINARY_OP80,280520-99.4%
GET_ITER80,160540-99.3%
BUILD_LIST80,160540-99.3%
LOAD_CONST85,200840-99.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS10,200720-92.9%
BINARY_OP_ADD_FLOAT5,100360-92.9%
BINARY_OP_SUBTRACT_FLOAT5,100360-92.9%
COMPARE_OP_INT5,100360-92.9%
LOAD_ATTR_MODULE20,4601,500-92.7%
POP_JUMP_IF_FALSE5,120380-92.6%
POP_JUMP_IF_NOT_NONE5,120380-92.6%
LOAD_GLOBAL_MODULE20,5201,560-92.4%
CALL_NON_PY_GENERAL10,260780-92.4%
PUSH_NULL20,7201,760-91.5%
POP_TOP5,2001,880-63.8%
CALL3603600.0%
LOAD_GLOBAL3603600.0%
RETURN_VALUE2402400.0%
LOAD_DEREF2402400.0%
LOAD_ATTR2002000.0%
RESUME_CHECK1801800.0%
CALL_FUNCTION_EX1601600.0%
FOR_ITER1201200.0%
NOP80800.0%
CALL_INTRINSIC_180800.0%
COPY_FREE_VARS80800.0%
LIST_EXTEND80800.0%
RESUME60600.0%
CALL_PY_EXACT_ARGS60600.0%
STORE_SUBSCR40400.0%
COMPARE_OP40400.0%
ENTER_EXECUTOR3,820
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
80,04088.5%42033.9%-99.5%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
10,14011.2%66053.2%-93.5%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
600.1%604.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure20083.3%6060.0%-70.0%
Success4016.7%4040.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
multiply different types200100.0%60100.0%-70.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
90,36099.6%1,26077.8%-98.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1800.2%18011.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success180100.0%180100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
5,10099.2%36090.0%-92.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.4%205.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
40,125,220100.0%1,38092.0%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
600.0%604.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success60100.0%60100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
20,46099.0%1,50088.2%-92.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1000.5%1005.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success100100.0%100100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
100,62099.6%2,04085.0%-98.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1800.2%1807.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success180100.0%180100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
39,959,980100.0%48092.3%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.0%203.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
80,322,32033.3%8,64026.8%-100.0%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
160,729,58066.7%21,92067.9%-100.0%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
81,4000.0%1,6405.1%-98.0%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
600.0%600.2%0.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
BINARY_OP80,04099.3%42042.9%-99.5%
CALL1800.2%18018.4%0.0%
LOAD_GLOBAL1800.2%18018.4%0.0%
LOAD_ATTR1000.1%10010.2%0.0%
FOR_ITER600.1%606.1%0.0%
STORE_SUBSCR200.0%202.0%0.0%
COMPARE_OP200.0%202.0%0.0%
BINARY_SLICE00.0%00.0%
STORE_SLICE00.0%00.0%
BINARY_SUBSCR00.0%00.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
BINARY_OP_ADD_FLOAT60100.0%60100.0%0.0%
GET_ITER00.0%00.0%
NOP00.0%00.0%
POP_TOP00.0%00.0%
PUSH_NULL00.0%00.0%
RETURN_VALUE00.0%00.0%
BUILD_LIST00.0%00.0%
CALL_FUNCTION_EX00.0%00.0%
CALL_INTRINSIC_100.0%00.0%
COPY_FREE_VARS00.0%00.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault00.0%00.0%
Calls to Python functions inlined240100.0%240100.0%0.0%
Calls via PyEval_EvalFrame (total)00.0%00.0%
Calls via PyEval_EvalFrame (vector)00.0%00.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)00.0%00.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)16066.7%16066.7%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed240100.0%240100.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache misses2520-20.0%
Method cache collisions2520-20.0%
Method cache hits75806.7%
Mortal increfs120,8200.1%125,2200.1%3.6%
Interpreter immortal increfs18,124,82012.7%17,960,84012.6%-0.9%
Allocations from freelist85,3600.4%85,7600.4%0.5%
Frees to freelist98,18098,5800.4%
Allocations to 4 kbytes35,8400.2%35,9400.2%0.3%
Interpreter mortal decrefs84,696,06042.1%84,915,26042.1%0.3%
Interpreter mortal increfs102,223,46071.5%102,442,58071.6%0.2%
Immortal decrefs488,3700.2%488,4800.2%0.0%
Mortal decrefs40,182,24020.0%40,188,80019.9%0.0%
Frees22,605,28022,607,1800.0%
Interpreter immortal decrefs75,948,56037.7%75,952,50037.7%0.0%
Immortal increfs22,478,73015.7%22,478,98015.7%0.0%
Allocations22,597,22099.6%22,597,36099.6%0.0%
Allocations to 512 bytes22,522,34099.3%22,522,38099.3%0.0%
Allocations over 4 kbytes39,0400.2%39,0400.2%0.0%
Inline values00
Materialize dict (on request)00
Materialize dict (new key)00
Materialize dict (too big)00
Materialize dict (str subclass)00
Method cache dunder hits00
Method cache dunder misses00
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
210,2403,84011,446,677,48010,2403,84011,447,414,800
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-generators-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-generators-vs-base.md new file mode 100644 index 00000000..b76a59a6 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-generators-vs-base.md @@ -0,0 +1,2233 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
FOR_ITER_GEN32,000,300600-100.0%
JUMP_BACKWARD32,000,320640-100.0%
JUMP_BACKWARD_NO_INTERRUPT470,064,24044,960-100.0%
SEND_GEN502,064,60057,480-100.0%
TO_BOOL_ALWAYS_TRUE32,275,34011,640-100.0%
GET_YIELD_FROM_ITER32,000,40012,560-100.0%
TO_BOOL_NONE32,277,12013,140-100.0%
RESUME_CHECK558,068,40024,069,640-95.7%
LOAD_ATTR_INSTANCE_VALUE128,002,70021,011,600-83.6%
POP_JUMP_IF_FALSE80,003,36016,026,400-80.0%
POP_TOP96,002,40032,022,360-66.6%
LOAD_FAST184,009,44077,018,340-58.1%
LOAD_CONST80,005,60048,017,760-40.0%
FOR_ITER_RANGE380360-5.3%
YIELD_VALUE502,065,040502,065,0400.0%
STORE_FAST56,003,12056,003,1200.0%
RETURN_CONST48,002,56048,002,5600.0%
LOAD_FAST_LOAD_FAST40,004,00040,004,0000.0%
INTERPRETER_EXIT32,001,72032,001,7200.0%
RETURN_GENERATOR32,000,80032,000,8000.0%
END_SEND32,000,40032,000,4000.0%
LOAD_GLOBAL_MODULE24,002,64024,002,6400.0%
STORE_ATTR_INSTANCE_VALUE24,002,34024,002,3400.0%
LOAD_GLOBAL_BUILTIN16,002,10016,002,1000.0%
RETURN_VALUE16,001,74016,001,7400.0%
CALL_LEN16,001,74016,001,7400.0%
COMPARE_OP_INT16,001,74016,001,7400.0%
CALL_PY_EXACT_ARGS16,001,68016,001,6800.0%
BINARY_SLICE16,001,60016,001,6000.0%
BINARY_OP8,003,0208,003,0200.0%
BINARY_SUBSCR8,002,9408,002,9400.0%
EXIT_INIT_CHECK8,000,7808,000,7800.0%
BINARY_OP_ADD_INT8,000,7808,000,7800.0%
CALL_ALLOC_AND_ENTER_INIT8,000,7808,000,7800.0%
CALL6006000.0%
LOAD_GLOBAL6006000.0%
GET_ITER4004000.0%
PUSH_NULL4004000.0%
CALL_BUILTIN_CLASS3603600.0%
END_FOR3203200.0%
LOAD_ATTR3203200.0%
LOAD_DEREF2402400.0%
CALL_NON_PY_GENERAL1801800.0%
LOAD_ATTR_MODULE1801800.0%
RESUME1601600.0%
CALL_FUNCTION_EX1601600.0%
COMPARE_OP1401400.0%
STORE_ATTR1201200.0%
NOP80800.0%
TO_BOOL80800.0%
BUILD_LIST80800.0%
CALL_INTRINSIC_180800.0%
COPY_FREE_VARS80800.0%
FOR_ITER80800.0%
LIST_EXTEND80800.0%
POP_JUMP_IF_TRUE80800.0%
SEND80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
ENTER_EXECUTOR32,028,680
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
8,000,84050.0%8,000,84050.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
8,000,84050.0%8,000,84050.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success401.8%401.8%0.0%
Failure2,14098.2%2,14098.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
floor divide2,140100.0%2,140100.0%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
16,001,600100.0%16,001,600100.0%0.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
8,000,800100.0%8,000,800100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success00.0%00.0%
Failure2,140100.0%2,140100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
sequence int2,140100.0%2,140100.0%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3000.0%3000.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
40,004,560100.0%40,004,560100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success300100.0%300100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1000.0%1000.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
16,001,740100.0%16,001,740100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success2050.0%2050.0%0.0%
Failure2050.0%2050.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
list20100.0%20100.0%0.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
32,000,680100.0%96092.3%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.0%403.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
128,002,880100.0%21,011,780100.0%-83.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1600.0%1600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success160100.0%160100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3000.0%3000.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
40,004,740100.0%40,004,740100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success300100.0%300100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### SEND + +
+ specialization stats for SEND family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
502,064,600100.0%57,48099.9%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.0%400.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
600.0%600.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
24,002,340100.0%24,002,340100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success60100.0%60100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
29,199,24062.3%10,32055.7%-100.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
17,677,26037.7%8,12043.8%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.0%400.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success550,940100.0%220100.0%-100.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
29,203,1800.9%40,1800.0%-99.9%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
1,383,500,24043.4%173,138,86014.7%-87.5%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
1,740,168,08054.6%971,254,02082.6%-44.2%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
32,009,5801.0%32,009,5802.7%0.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
BINARY_SLICE16,001,60050.0%16,001,60050.0%0.0%
BINARY_OP8,000,84025.0%8,000,84025.0%0.0%
BINARY_SUBSCR8,000,80025.0%8,000,80025.0%0.0%
CALL3000.0%3000.0%0.0%
LOAD_GLOBAL3000.0%3000.0%0.0%
LOAD_ATTR1600.0%1600.0%0.0%
COMPARE_OP1000.0%1000.0%0.0%
STORE_ATTR600.0%600.0%0.0%
TO_BOOL400.0%400.0%0.0%
FOR_ITER400.0%400.0%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
RESUME3,9400.0%29,86042.6%657.9%
RESUME_CHECK3,9400.0%29,86042.6%657.9%
TO_BOOL_NONE14,599,86050.0%5,0207.2%-100.0%
TO_BOOL_ALWAYS_TRUE14,599,38050.0%5,3007.6%-100.0%
CACHE00.0%00.0%
END_FOR00.0%00.0%
END_SEND00.0%00.0%
EXIT_INIT_CHECK00.0%00.0%
GET_ITER00.0%00.0%
GET_YIELD_FROM_ITER00.0%00.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault32,001,7205.4%32,001,7205.4%0.0%
Calls to Python functions inlined558,067,64094.6%558,067,64094.6%0.0%
Calls via PyEval_EvalFrame (total)32,001,7205.4%32,001,7205.4%0.0%
Calls via PyEval_EvalFrame (vector)32,000,8205.4%32,000,8205.4%0.0%
Calls via PyEval_EvalFrame (generator)9000.0%9000.0%0.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)32,000,8205.4%32,000,8205.4%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)1600.0%1600.0%0.0%
Calls via PyEval_EvalFrame (api)32,000,8005.4%32,000,8005.4%0.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed64,004,30010.8%64,004,30010.8%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Interpreter mortal increfs512,064,02052.5%1,121,080,74072.2%118.9%
Interpreter mortal decrefs576,110,04050.1%1,185,126,88065.5%105.7%
Method cache collisions9211727.2%
Interpreter immortal decrefs262,261,08022.8%311,933,60017.2%18.9%
Interpreter immortal increfs255,979,90026.2%223,992,06014.4%-12.5%
Method cache misses80856.2%
Method cache hits300295-1.7%
Method cache dunder misses80811.2%
Allocations from freelist16,001,94014.3%16,008,02014.3%0.0%
Frees to freelist16,003,10016,009,1800.0%
Mortal decrefs88,208,7817.7%88,220,3694.9%0.0%
Mortal increfs40,209,9804.1%40,213,7402.6%0.0%
Frees96,034,21096,036,0460.0%
Allocations96,031,36085.7%96,031,54085.7%0.0%
Immortal increfs167,835,22017.2%167,835,53210.8%0.0%
Allocations to 512 bytes96,031,36085.7%96,031,50085.7%0.0%
Immortal decrefs223,858,01919.5%223,858,16312.4%0.0%
Method cache dunder hits32,002,98032,002,979-0.0%
Allocations to 4 kbytes00.0%400.0%40 / 0 !!
Allocations over 4 kbytes00.0%00.0%
Inline values8,000,8008,000,8000.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
13,9403,94098,320,4603,9403,94098,322,060
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-genshi-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-genshi-vs-base.md new file mode 100644 index 00000000..2d6cc90c --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-genshi-vs-base.md @@ -0,0 +1,3572 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
CALL_KW_BOUND_METHOD1,920,300280-100.0%
JUMP_BACKWARD108,049,92028,180-100.0%
STORE_SUBSCR_DICT5,282,6005,340-99.9%
COPY_FREE_VARS5,283,0405,780-99.9%
CALL_PY_GENERAL7,046,28011,240-99.8%
CALL_TYPE_17,209,86014,680-99.8%
FOR_ITER_TUPLE1,769,5006,720-99.6%
TO_BOOL_STR1,028,9605,260-99.5%
UNPACK_SEQUENCE_TWO_TUPLE1,777,66013,660-99.2%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS965,6208,680-99.1%
FOR_ITER_RANGE162,0601,580-99.0%
COMPARE_OP_INT1,941,42020,880-98.9%
CALL_BUILTIN_CLASS483,4405,700-98.8%
CALL_LEN1,947,08026,620-98.6%
CALL_KW_NON_PY161,5402,220-98.6%
LIST_APPEND162,0802,320-98.6%
FOR_ITER_LIST21,474,880422,180-98.0%
POP_JUMP_IF_NOT_NONE506,18025,920-94.9%
CALL_BUILTIN_O7,687,300411,500-94.6%
RETURN_CONST5,934,340576,340-90.3%
FOR_ITER_GEN80,011,2408,969,080-88.8%
EXTENDED_ARG58,592,2008,983,840-84.7%
POP_TOP125,674,76021,402,580-83.0%
TO_BOOL_INT5,445,480968,540-82.2%
TO_BOOL_LIST15,206,2803,529,060-76.8%
CONTAINS_OP_SET3,524,180884,460-74.9%
JUMP_FORWARD3,528,480890,560-74.8%
FOR_ITER17,949,0604,824,760-73.1%
NOP1,461,140417,360-71.4%
RESUME_CHECK149,195,52042,750,020-71.3%
LOAD_ATTR_INSTANCE_VALUE16,395,6404,872,820-70.3%
CALL_NON_PY_GENERAL13,462,3204,104,080-69.5%
GET_ITER14,270,1605,233,300-63.3%
LOAD_GLOBAL_BUILTIN35,206,94014,883,140-57.7%
CALL_BUILTIN_FAST11,231,8405,145,560-54.2%
LOAD_FAST_LOAD_FAST66,321,96030,564,780-53.9%
COMPARE_OP1,769,940889,640-49.7%
LOAD_ATTR_METHOD_NO_DICT8,662,3004,586,880-47.0%
UNPACK_SEQUENCE_TUPLE32,492,36018,809,140-42.1%
STORE_FAST_STORE_FAST32,509,54018,820,960-42.1%
TO_BOOL16,846,3609,780,840-41.9%
LOAD_FAST508,272,220297,120,760-41.5%
CALL_PY_EXACT_ARGS22,118,74013,244,920-40.1%
POP_JUMP_IF_FALSE178,703,900109,182,340-38.9%
PUSH_NULL44,042,72026,923,720-38.9%
POP_JUMP_IF_TRUE29,622,74018,187,120-38.6%
STORE_FAST182,097,200112,185,060-38.4%
BUILD_TUPLE34,120,94021,477,740-37.1%
POP_JUMP_IF_NONE11,845,0807,524,300-36.5%
STORE_FAST_LOAD_FAST1,5401,000-35.1%
IS_OP128,211,94085,250,200-33.5%
RETURN_VALUE42,612,86029,098,500-31.7%
LOAD_ATTR_SLOT11,534,5008,023,860-30.4%
LOAD_CONST119,366,72083,790,200-29.8%
LOAD_GLOBAL_MODULE177,875,520124,991,060-29.7%
BINARY_SUBSCR_STR_INT4,0802,900-28.9%
BUILD_MAP11,528,7608,415,460-27.0%
CALL_ISINSTANCE13,463,0809,937,940-26.2%
TO_BOOL_BOOL28,182,14021,219,280-24.7%
STORE_DEREF1,9601,480-24.5%
YIELD_VALUE100,655,20076,092,640-24.4%
CALL_BUILTIN_FAST_WITH_KEYWORDS5,284,5004,006,240-24.2%
LOAD_ATTR15,907,74012,073,220-24.1%
BINARY_SUBSCR_GETITEM2,3401,780-23.9%
INTERPRETER_EXIT27,047,58020,644,460-23.7%
CONTAINS_OP_DICT6,249,2004,805,840-23.1%
MAKE_CELL5,2404,180-20.2%
CALL_BOUND_METHOD_EXACT_ARGS11,530,1409,211,880-20.1%
LOAD_DEREF10,4008,360-19.6%
BINARY_SUBSCR_TUPLE_INT51,529,96041,448,600-19.6%
CONTAINS_OP7,3005,960-18.4%
CALL_METHOD_DESCRIPTOR_O3,7803,100-18.0%
BINARY_SUBSCR_LIST_INT487,340404,460-17.0%
DICT_MERGE483,800403,000-16.7%
MAKE_FUNCTION5,2804,400-16.7%
LOAD_FAST_AND_CLEAR2,6402,200-16.7%
CALL_METHOD_DESCRIPTOR_NOARGS960800-16.7%
LOAD_NAME12,003,52010,003,200-16.7%
BINARY_SUBSCR_DICT5,282,2404,402,080-16.7%
END_FOR483,460402,920-16.7%
RETURN_GENERATOR485,680404,880-16.6%
CALL_FUNCTION_EX484,760404,120-16.6%
SWAP5,299,0004,417,880-16.6%
LOAD_ATTR_METHOD_WITH_VALUES5,782,7804,821,580-16.6%
SET_FUNCTION_ATTRIBUTE3,8803,240-16.5%
BINARY_SUBSCR493,820413,340-16.3%
STORE_ATTR_INSTANCE_VALUE28,94024,700-14.7%
COMPARE_OP_STR10,0608,620-14.3%
CALL_ALLOC_AND_ENTER_INIT2,2001,900-13.6%
DELETE_SUBSCR1,8401,600-13.0%
CALL_METHOD_DESCRIPTOR_FAST632,040551,080-12.8%
BINARY_OP_ADD_INT8,4807,500-11.6%
BUILD_LIST21,04018,740-10.9%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES2,2802,040-10.5%
IMPORT_NAME2,4402,200-9.8%
TO_BOOL_NONE6,2405,640-9.6%
IMPORT_FROM2,9602,720-8.1%
LOAD_ATTR_PROPERTY1,1201,040-7.1%
UNARY_NOT620580-6.5%
CALL_LIST_APPEND13,42012,580-6.3%
CALL_KW_PY3,0002,840-5.3%
LOAD_ATTR_MODULE15,057,70014,257,620-5.3%
BINARY_OP_SUBTRACT_INT3,5603,380-5.1%
BINARY_OP17,56016,800-4.3%
STORE_SUBSCR960920-4.2%
EXIT_INIT_CHECK2,2002,120-3.6%
STORE_SUBSCR_LIST_INT3,0402,940-3.3%
COPY17,76017,180-3.3%
STORE_ATTR_SLOT6,3206,160-2.5%
STORE_ATTR8,2208,020-2.4%
BINARY_OP_ADD_UNICODE9,2009,080-1.3%
CALL24,32024,080-1.0%
CALL_STR_113,441,56013,441,5600.0%
LOAD_GLOBAL20,04020,0400.0%
RESUME5,2205,2200.0%
STORE_NAME5,1605,1600.0%
CHECK_EXC_MATCH4,4804,4800.0%
POP_EXCEPT4,4804,4800.0%
PUSH_EXC_INFO4,4804,4800.0%
JUMP_BACKWARD_NO_INTERRUPT4,2404,2400.0%
UNPACK_SEQUENCE2,4802,4800.0%
BINARY_SLICE2,0802,0800.0%
LOAD_ATTR_CLASS1,5601,5600.0%
CALL_KW1,1201,1200.0%
CALL_TUPLE_11,1001,1000.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK1,0401,0400.0%
LOAD_ATTR_NONDESCRIPTOR_NO_DICT8808800.0%
TO_BOOL_ALWAYS_TRUE7207200.0%
LIST_EXTEND7207200.0%
LOAD_SPECIAL7207200.0%
BINARY_OP_INPLACE_ADD_UNICODE6806800.0%
CALL_INTRINSIC_16006000.0%
BINARY_OP_MULTIPLY_INT4404400.0%
LOAD_BUILD_CLASS3603600.0%
LOAD_LOCALS3603600.0%
LOAD_SUPER_ATTR_METHOD3603600.0%
STORE_SLICE3203200.0%
LOAD_FAST_CHECK3003000.0%
UNPACK_SEQUENCE_LIST2802800.0%
LOAD_ATTR_METHOD_LAZY_DICT2402400.0%
UNARY_INVERT1601600.0%
BINARY_OP_SUBTRACT_FLOAT1201200.0%
DELETE_ATTR80800.0%
LOAD_SUPER_ATTR80800.0%
COMPARE_OP_FLOAT40400.0%
ENTER_EXECUTOR25,905,620
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
22,48056.1%21,20055.8%-5.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
15,72039.3%14,96039.4%-4.8%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success66035.9%66035.9%0.0%
Failure1,18064.1%1,18064.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
remainder78066.1%78066.1%0.0%
add other22018.6%22018.6%0.0%
multiply different types18015.3%18015.3%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,080100.0%2,080100.0%0.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
57,305,26099.1%46,259,12099.1%-19.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
491,5600.9%411,1200.9%-16.4%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
7000.0%7000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,30056.5%1,26055.8%-3.1%
Success1,00043.5%1,00044.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple slice16012.3%14011.1%-12.5%
list slice56043.1%54042.9%-3.6%
out of range58044.6%58046.0%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
107,541,740100.0%65,232,660100.0%-39.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
12,6600.0%12,6600.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
5,0600.0%5,0600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success12,260100.0%12,020100.0%-2.0%
Failure00.0%00.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
init not inline values6060 / 0 !!6060 / 0 !!0.0%
init not python2020 / 0 !!2020 / 0 !!0.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
56050.0%56050.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,951,32052.4%29,3403.2%-98.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,768,16047.5%888,08096.6%-49.8%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
2000.0%2000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,06059.6%84053.8%-20.8%
Success72040.4%72046.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
different types74069.8%52061.9%-29.7%
tuple26024.5%26031.0%0.0%
other605.7%607.1%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
9,773,38099.9%5,690,30099.9%-41.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6,5400.1%5,2000.1%-20.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success16021.1%16021.1%0.0%
Failure60078.9%60078.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
str36060.0%36060.0%0.0%
list18030.0%18030.0%0.0%
other6010.0%6010.0%0.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
103,401,64085.2%9,393,12066.0%-90.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
17,939,86014.8%4,820,84033.9%-73.1%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
16,0400.0%6,4400.0%-59.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure8,08085.4%2,82070.5%-65.1%
Success1,38014.6%1,18029.5%-14.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
dict values3,42042.3%2007.1%-94.2%
itertools1,78022.0%32011.3%-82.0%
dict items600.7%401.4%-33.3%
other2,02025.0%1,54054.6%-23.8%
zip3404.2%2609.2%-23.5%
set2002.5%2007.1%0.0%
dict keys2002.5%2007.1%0.0%
enumerate600.7%602.1%0.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
57,434,60078.3%36,564,12075.2%-36.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
15,891,04021.7%12,057,62024.8%-24.1%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
5,4400.0%5,4400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure7,30043.6%6,20039.6%-15.1%
Success9,44056.4%9,44060.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
class method obj5,22071.5%4,32069.7%-17.2%
method1,16015.9%96015.5%-17.2%
metaclass attribute3604.9%3605.8%0.0%
class attr simple3204.4%3205.2%0.0%
overriding descriptor1602.2%1602.6%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
213,077,300100.0%139,869,040100.0%-34.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
10,0000.0%10,0000.0%0.0%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
800.0%800.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
5,1600.0%5,1600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success10,040100.0%10,040100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_SUPER_ATTR + +
+ specialization stats for LOAD_SUPER_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
409.1%409.1%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
36081.8%36081.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
35,26081.1%30,86079.4%-12.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5,06011.6%4,90012.6%-3.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure52016.5%48015.4%-7.7%
Success2,64083.5%2,64084.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
method20038.5%16033.3%-20.0%
overriding descriptor30057.7%30062.5%0.0%
property203.8%204.2%0.0%
+ + +
+ +### STORE_SLICE + +
+ specialization stats for STORE_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
320100.0%320100.0%0.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
5,285,640100.0%8,28090.0%-99.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
7200.0%6807.4%-5.6%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success240100.0%240100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
848,9201.3%1,9800.0%-99.8%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
49,020,26073.5%25,725,88072.4%-47.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
16,758,46025.1%9,774,36027.5%-41.7%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure85,26082.1%3,86059.4%-95.5%
Success18,64017.9%2,64040.6%-85.8%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
mapping81,72095.8%94024.4%-98.8%
dict3,4004.0%2,80072.5%-17.6%
tuple1400.2%1203.1%-14.3%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
34,270,300100.0%18,823,080100.0%-45.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,5200.0%1,5200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success84087.5%84087.5%0.0%
Failure12012.5%12012.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
iterator120100.0%120100.0%0.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
881,5400.0%25,7000.0%-97.1%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
799,378,98029.5%385,306,08026.8%-51.8%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
53,051,4002.0%28,063,7002.0%-47.1%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
1,859,773,04068.5%1,024,887,40071.3%-44.9%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
FOR_ITER17,939,86033.9%4,820,84017.2%-73.1%
COMPARE_OP1,768,1603.3%888,0803.2%-49.8%
TO_BOOL16,758,46031.7%9,774,36034.9%-41.7%
LOAD_ATTR15,891,04030.0%12,057,62043.1%-24.1%
CONTAINS_OP6,5400.0%5,2000.0%-20.5%
BINARY_SUBSCR491,5600.9%411,1201.5%-16.4%
BINARY_OP15,7200.0%14,9600.1%-4.8%
STORE_ATTR5,0600.0%4,9000.0%-3.2%
CALL12,6600.0%12,6600.0%0.0%
LOAD_GLOBAL10,0000.0%10,0000.0%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
TO_BOOL_STR848,00096.2%1,0604.0%-99.9%
FOR_ITER_GEN2,0800.2%7602.9%-63.5%
FOR_ITER_LIST13,9601.6%5,68021.5%-59.3%
LOAD_ATTR_SLOT4,7600.5%4,76018.0%0.0%
CALL_BOUND_METHOD_EXACT_ARGS3,3400.4%3,34012.6%0.0%
LOAD_GLOBAL_MODULE3,0800.3%3,08011.7%0.0%
LOAD_GLOBAL_BUILTIN2,0800.2%2,0807.9%0.0%
CALL_PY_EXACT_ARGS1,4800.2%1,4805.6%0.0%
BINARY_SUBSCR_LIST_INT5400.1%
TO_BOOL_NONE5400.1%
RESUME7202.7%
RESUME_CHECK7202.7%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls via PyEval_EvalFrame (generator)21,131,56014.1%15,689,64013.6%-25.8%
Calls to PyEval_EvalDefault27,048,12018.1%20,645,00017.8%-23.7%
Calls via PyEval_EvalFrame (total)27,048,12018.1%20,645,00017.8%-23.7%
Calls to Python functions inlined122,638,30081.9%95,114,14082.2%-22.4%
Frames pushed48,547,90032.4%39,263,82033.9%-19.1%
Calls via PyEval_EvalFrame (legacy)5,280,5203.5%4,400,4403.8%-16.7%
Calls via PyEval_EvalFrame (vector)5,916,5604.0%4,955,3604.3%-16.2%
Calls via PyEval_EvalFrame (function vectorcall)635,6800.4%554,5600.5%-12.8%
Calls via PyEval_EvalFrame (function ex)8400.0%7600.0%-9.5%
Calls via PyEval_EvalFrame (api)1,6000.0%1,5200.0%-5.0%
Calls via PyEval_EvalFrame (build class)3600.0%3600.0%0.0%
Calls via PyEval_EvalFrame (slot)3,5400.0%3,5400.0%0.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created10,2000.0%10,2000.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache dunder misses2,58086,8033,264.5%
Method cache collisions14,452182,4311,162.3%
Method cache misses17,157101,172489.7%
Allocations to 4 kbytes5,2600.0%6,9400.0%31.9%
Frees to freelist65,769,94046,237,860-29.7%
Allocations from freelist65,767,88049.6%46,237,84047.6%-29.7%
Interpreter immortal increfs279,883,36016.5%201,499,84014.1%-28.0%
Frees74,594,70754,504,830-26.9%
Mortal decrefs301,573,17116.5%227,204,11414.5%-24.7%
Allocations to 512 bytes66,924,78050.4%50,834,44052.4%-24.0%
Allocations66,933,48050.4%50,844,78052.4%-24.0%
Immortal decrefs107,185,9155.8%82,056,1785.2%-23.4%
Mortal increfs230,285,29613.6%179,090,25312.5%-22.2%
Immortal increfs131,019,2447.7%105,176,0087.4%-19.7%
Method cache dunder hits10,972,5408,966,717-18.3%
Method cache hits32,310,00326,861,868-16.9%
Interpreter immortal decrefs331,287,44018.1%284,534,34018.1%-14.1%
Interpreter mortal decrefs1,092,999,10059.6%974,166,84062.1%-10.9%
Interpreter mortal increfs1,056,650,86062.2%943,664,60066.0%-10.7%
Inline values4,4604,060-9.0%
Allocations over 4 kbytes3,4400.0%3,4000.0%-1.2%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
11,00016,66010,611,64054011,8007,474,500
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files40400.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-go-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-go-vs-base.md new file mode 100644 index 00000000..68d9ffe4 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-go-vs-base.md @@ -0,0 +1,2847 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD36,477,20015,180-100.0%
CONTAINS_OP_SET2,516,7005,560-99.8%
UNARY_NOT2,516,7205,580-99.8%
CALL_METHOD_DESCRIPTOR_O1,728,2006,660-99.6%
CALL_NON_PY_GENERAL3,495,84016,840-99.5%
COMPARE_OP_FLOAT1,061,2806,920-99.3%
FOR_ITER_RANGE3,159,66040,420-98.7%
LOAD_ATTR_MODULE5,785,04094,880-98.4%
PUSH_NULL5,850,960128,440-97.8%
CALL_BUILTIN_CLASS4,738,720114,000-97.6%
STORE_FAST_LOAD_FAST1,292,96032,380-97.5%
BINARY_OP_ADD_FLOAT1,117,18032,200-97.1%
CALL_BUILTIN_FAST1,117,18032,200-97.1%
LIST_APPEND2,631,28090,800-96.5%
TO_BOOL_NONE1,049,82040,120-96.2%
TO_BOOL_ALWAYS_TRUE1,123,02043,720-96.1%
BINARY_OP_MULTIPLY_INT1,211,72057,560-95.2%
CALL_BUILTIN_O1,237,52078,980-93.6%
FOR_ITER_TUPLE64,7805,160-92.0%
UNPACK_SEQUENCE_TWO_TUPLE51,8204,760-90.8%
FOR_ITER_LIST40,381,3205,485,880-86.4%
TO_BOOL_INT14,989,9402,583,200-82.8%
RESUME_CHECK73,748,06017,349,080-76.5%
IS_OP54,88013,680-75.1%
POP_JUMP_IF_NOT_NONE54,88013,680-75.1%
CALL_BOUND_METHOD_GENERAL54,90013,700-75.0%
LOAD_GLOBAL_BUILTIN9,307,0802,468,920-73.5%
LOAD_ATTR_METHOD_WITH_VALUES73,585,20020,345,940-72.4%
CALL_PY_EXACT_ARGS61,558,36017,663,720-71.3%
POP_JUMP_IF_TRUE44,574,32013,348,500-70.1%
CALL_KW_PY3,629,3201,117,020-69.2%
CALL_PY_GENERAL8,443,6402,707,260-67.9%
COMPARE_OP_INT105,181,72037,027,960-64.8%
LOAD_FAST568,506,800201,276,980-64.6%
STORE_FAST173,311,84062,908,640-63.7%
CALL_METHOD_DESCRIPTOR_NOARGS71,00027,880-60.7%
LOAD_ATTR_INSTANCE_VALUE337,316,240136,693,760-59.5%
STORE_GLOBAL8,196,8003,448,580-57.9%
LOAD_GLOBAL_MODULE66,898,22028,268,120-57.7%
BINARY_OP_ADD_INT24,002,92010,578,140-55.9%
POP_JUMP_IF_FALSE121,190,08055,630,420-54.1%
CALL_LEN4,567,4002,353,960-48.5%
LOAD_ATTR63,00034,740-44.9%
CALL_ALLOC_AND_ENTER_INIT61,38034,000-44.6%
POP_TOP33,995,22019,607,780-42.3%
BINARY_OP18,413,40010,758,080-41.6%
GET_ITER8,958,1605,519,260-38.4%
BINARY_SUBSCR_LIST_INT27,595,86017,152,980-37.8%
TO_BOOL_LIST25,50016,280-36.2%
COMPARE_OP142,16090,800-36.1%
NOP25,60016,380-36.0%
LOAD_CONST62,233,60040,400,280-35.1%
TO_BOOL_BOOL44,768,12029,198,680-34.8%
LOAD_ATTR_METHOD_NO_DICT6,005,5404,161,980-30.7%
COPY49,754,08034,559,500-30.5%
BINARY_OP_SUBTRACT_INT20,087,76014,024,760-30.2%
LOAD_FAST_LOAD_FAST49,568,16038,168,200-23.0%
RETURN_CONST26,740,64021,206,700-20.7%
STORE_ATTR_INSTANCE_VALUE62,117,92050,266,200-19.1%
BUILD_LIST90,40074,840-17.2%
SWAP29,498,16024,541,400-16.8%
LOAD_FAST_AND_CLEAR45,28039,020-13.8%
RETURN_VALUE47,069,54040,862,240-13.2%
JUMP_FORWARD4,762,7204,266,240-10.4%
STORE_FAST_STORE_FAST2,633,6002,530,180-3.9%
CALL_LIST_APPEND2,478,3002,403,540-3.0%
STORE_SUBSCR_LIST_INT11,329,34011,292,380-0.3%
CALL_METHOD_DESCRIPTOR_FAST1,728,1201,723,980-0.2%
EXIT_INIT_CHECK61,38061,3800.0%
CALL3,7603,7600.0%
LOAD_GLOBAL3,7203,7200.0%
BINARY_SUBSCR3,4803,4800.0%
STORE_ATTR2,4202,4200.0%
TO_BOOL9209200.0%
FOR_ITER8008000.0%
RESUME7407400.0%
LOAD_DEREF2402400.0%
STORE_SUBSCR2002000.0%
BUILD_TUPLE1601600.0%
COPY_FREE_VARS1601600.0%
CALL_ISINSTANCE1601600.0%
INTERPRETER_EXIT1401400.0%
CALL_FUNCTION_EX80800.0%
CALL_KW80800.0%
CALL_TYPE_180800.0%
LOAD_SUPER_ATTR_METHOD80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
CONTAINS_OP40400.0%
UNPACK_SEQUENCE40400.0%
LOAD_SUPER_ATTR20200.0%
ENTER_EXECUTOR45,162,460
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
423,6200.7%7,1800.0%-98.3%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
45,996,02070.9%24,685,54069.6%-46.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
18,375,70028.3%10,752,86030.3%-41.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success8,76019.2%90016.9%-89.7%
Failure36,92080.8%4,44083.1%-88.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
add different types31,10084.2%56012.6%-98.2%
multiply different types1,0402.8%1603.6%-84.6%
true divide different types9202.5%3608.1%-60.9%
floor divide1600.4%1202.7%-25.0%
remainder1600.4%1202.7%-25.0%
xor3,5409.6%3,12070.3%-11.9%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
27,538,46099.8%17,095,58099.6%-37.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,9400.0%1,9400.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
57,4000.2%57,4000.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,34051.1%1,34051.1%0.0%
Failure1,28048.9%1,28048.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
out of range1,280100.0%1,280100.0%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
79,286,340100.0%24,439,080100.0%-69.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,8400.0%1,8400.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
800.0%800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,960100.0%1,960100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4050.0%4050.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
31,7400.0%6,3600.0%-80.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
106,211,26099.8%37,028,52099.7%-65.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
139,2600.1%88,7200.2%-36.3%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,32037.9%80036.4%-39.4%
Failure2,16062.1%1,40063.6%-35.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
float long56025.9%20014.3%-64.3%
big int1,24057.4%88062.9%-29.0%
bool2009.3%16011.4%-20.0%
long float1607.4%16011.4%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,516,700100.0%5,56099.3%-99.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.0%200.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
43,605,760100.0%5,531,460100.0%-87.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4000.0%4000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success400100.0%400100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
422,688,840100.0%161,293,380100.0%-61.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
58,8400.0%30,6000.0%-48.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
3,1800.0%3,1800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure2004.7%1804.3%-10.0%
Success4,02095.3%4,02095.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
method200100.0%180100.0%-10.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
76,205,300100.0%30,737,040100.0%-59.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,7400.0%1,7400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,980100.0%1,980100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_SUPER_ATTR + +
+ specialization stats for LOAD_SUPER_ATTR family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
8080.0%8080.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
62,117,920100.0%50,266,200100.0%-19.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,2000.0%1,2000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,220100.0%1,220100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
11,329,340100.0%11,292,380100.0%-0.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1000.0%1000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success100100.0%100100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
2,902,4804.7%650,3402.0%-77.6%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
58,534,18095.3%31,203,86098.0%-46.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4400.0%4400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success55,240100.0%12,720100.0%-77.0%
Failure00.0%00.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
51,82099.9%4,76099.2%-90.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.0%200.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
3,418,5000.1%725,0600.1%-78.8%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
1,025,973,52044.1%414,814,62039.9%-59.6%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
1,280,096,78055.0%613,930,24059.0%-52.0%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
18,634,0400.8%10,899,1001.0%-41.5%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
LOAD_ATTR58,8400.3%30,6000.3%-48.0%
BINARY_OP18,375,70098.9%10,752,86098.8%-41.5%
COMPARE_OP139,2600.7%88,7200.8%-36.3%
BINARY_SUBSCR1,9400.0%1,9400.0%0.0%
CALL1,8400.0%1,8400.0%0.0%
LOAD_GLOBAL1,7400.0%1,7400.0%0.0%
STORE_ATTR1,2000.0%1,2000.0%0.0%
TO_BOOL4400.0%4400.0%0.0%
FOR_ITER4000.0%4000.0%0.0%
STORE_SUBSCR1000.0%1000.0%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
BINARY_OP_ADD_INT423,62012.4%7,1801.0%-98.3%
TO_BOOL_ALWAYS_TRUE603,28017.6%15,9202.2%-97.4%
TO_BOOL_NONE604,26017.7%16,0402.2%-97.3%
COMPARE_OP_FLOAT25,3800.7%2,1200.3%-91.6%
TO_BOOL_INT846,94024.8%308,86042.6%-63.5%
TO_BOOL_BOOL848,00024.8%309,52042.7%-63.5%
COMPARE_OP_INT6,3600.2%4,2400.6%-33.3%
BINARY_SUBSCR_LIST_INT57,4001.7%57,4007.9%0.0%
LOAD_ATTR_METHOD_WITH_VALUES3,1800.1%3,1800.4%0.0%
CALL_METHOD_DESCRIPTOR_FAST800.0%
RESUME5200.1%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault1400.0%1400.0%0.0%
Calls to Python functions inlined73,748,660100.0%73,748,660100.0%0.0%
Calls via PyEval_EvalFrame (total)1400.0%1400.0%0.0%
Calls via PyEval_EvalFrame (vector)1400.0%1400.0%0.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)1400.0%1400.0%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)800.0%800.0%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed73,810,180100.1%73,810,180100.1%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Mortal decrefs38,237,7372.5%44,938,6202.6%17.5%
Interpreter mortal increfs914,895,88059.7%1,026,845,64063.4%12.2%
Interpreter mortal decrefs963,165,96062.1%1,068,477,14062.4%10.9%
Interpreter immortal decrefs535,480,46034.5%583,953,96034.1%9.1%
Immortal decrefs14,435,1350.9%15,105,5060.9%4.6%
Interpreter immortal increfs535,691,30035.0%510,922,46031.5%-4.6%
Allocations to 4 kbytes64,3200.1%67,0000.2%4.2%
Allocations over 4 kbytes16,0000.0%16,1800.0%1.1%
Method cache dunder misses205203-1.0%
Method cache misses1,3711,3800.7%
Method cache dunder hits3953970.5%
Method cache collisions9469480.2%
Frees29,869,50929,911,2770.1%
Method cache hits67,06967,040-0.0%
Mortal increfs43,549,4372.8%43,561,4712.7%0.0%
Immortal increfs38,138,2352.5%38,147,7552.4%0.0%
Allocations29,893,44069.2%29,897,62069.2%0.0%
Frees to freelist13,327,06013,328,3800.0%
Allocations from freelist13,327,48030.8%13,328,78030.8%0.0%
Allocations to 512 bytes29,813,12069.0%29,814,44069.0%0.0%
Inline values61,52061,5200.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
14048,0404,683,6604065,1204,671,500
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
0120120 / 0 !!
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
0120120 / 0 !!
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-hexiom-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-hexiom-vs-base.md new file mode 100644 index 00000000..79ebd2a7 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-hexiom-vs-base.md @@ -0,0 +1,2712 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD181,361,04022,720-100.0%
STORE_DEREF4,423,6803,640-99.9%
CALL_BUILTIN_FAST_WITH_KEYWORDS3,829,7409,160-99.8%
SET_FUNCTION_ATTRIBUTE3,829,7609,180-99.8%
MAKE_FUNCTION3,829,8409,260-99.8%
RETURN_GENERATOR3,829,8409,260-99.8%
COPY_FREE_VARS3,829,8409,260-99.8%
EXTENDED_ARG1,305,6009,460-99.3%
CONTAINS_OP_DICT291,8202,180-99.3%
FOR_ITER_RANGE82,378,280773,700-99.1%
CALL_METHOD_DESCRIPTOR_O1,116,20020,780-98.1%
POP_JUMP_IF_TRUE57,064,9601,137,320-98.0%
BINARY_SUBSCR_DICT263,7005,360-98.0%
JUMP_FORWARD16,650,240421,640-97.5%
LOAD_DEREF100,918,0003,861,020-96.2%
CONTAINS_OP97,020,5204,084,920-95.8%
BUILD_TUPLE4,751,360221,280-95.3%
FOR_ITER_LIST113,540,8207,071,320-93.8%
CALL_METHOD_DESCRIPTOR_FAST15,8401,040-93.4%
STORE_FAST_LOAD_FAST5,780,880413,600-92.8%
LIST_APPEND5,754,880414,860-92.8%
LOAD_GLOBAL_BUILTIN103,405,2408,387,460-91.9%
LOAD_ATTR_INSTANCE_VALUE185,693,46017,845,740-90.4%
TO_BOOL_BOOL87,369,8008,689,040-90.1%
CALL_LEN93,885,32010,720,980-88.6%
LOAD_ATTR_METHOD_WITH_VALUES91,905,88010,739,540-88.3%
CALL_PY_EXACT_ARGS96,705,76011,449,800-88.2%
LOAD_FAST653,573,92078,559,580-88.0%
BINARY_SUBSCR_STR_INT97,20013,140-86.5%
COMPARE_OP_STR97,26013,200-86.4%
BINARY_SUBSCR6,288,980861,360-86.3%
CALL_BUILTIN_CLASS5,585,380772,020-86.2%
BINARY_SLICE61,4409,000-85.4%
BINARY_SUBSCR_LIST_INT199,850,90029,711,280-85.1%
LOAD_ATTR_METHOD_NO_DICT2,330,100357,200-84.7%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS2,600420-83.8%
STORE_FAST264,249,04042,886,780-83.8%
POP_JUMP_IF_FALSE191,426,64033,381,320-82.6%
LOAD_FAST_LOAD_FAST68,295,76012,879,860-81.1%
COMPARE_OP_INT142,655,32028,578,880-80.0%
CALL_NON_PY_GENERAL2,780600-78.4%
LOAD_ATTR_MODULE2,780600-78.4%
LOAD_CONST251,760,80061,240,880-75.7%
GET_ITER14,820,0003,999,500-73.0%
CALL_LIST_APPEND1,195,460334,960-72.0%
BINARY_SUBSCR_GETITEM18,490,6205,187,780-71.9%
PUSH_NULL3,040860-71.7%
BINARY_OP_SUBTRACT_INT8,831,7402,572,020-70.9%
COPY17,582,0805,120,440-70.9%
RETURN_VALUE104,729,62031,450,200-70.0%
SWAP19,156,4806,022,820-68.6%
STORE_SUBSCR_LIST_INT9,269,6002,994,520-67.7%
POP_JUMP_IF_NOT_NONE1,395,200581,720-58.3%
RESUME_CHECK189,007,30088,754,980-53.0%
BINARY_OP_MULTIPLY_INT20,3809,580-53.0%
RETURN_CONST12,142,1605,708,300-53.0%
STORE_ATTR_INSTANCE_VALUE1,889,000895,240-52.6%
BINARY_SUBSCR_TUPLE_INT547,820284,440-48.1%
MAKE_CELL552,960287,320-48.0%
BUILD_LIST2,035,2801,358,780-33.2%
CALL_ALLOC_AND_ENTER_INIT629,620425,940-32.3%
CALL_KW_NON_PY74,12054,180-26.9%
BINARY_OP_ADD_INT21,127,10016,154,920-23.5%
BINARY_OP69,34059,440-14.3%
UNPACK_SEQUENCE_TWO_TUPLE332,820285,880-14.1%
STORE_FAST_STORE_FAST332,880285,940-14.1%
LOAD_GLOBAL_MODULE18,774,44016,897,920-10.0%
POP_TOP79,035,50077,514,200-1.9%
LOAD_FAST_AND_CLEAR417,280413,840-0.8%
CALL_PY_GENERAL412,100409,840-0.5%
INTERPRETER_EXIT76,596,08076,596,0800.0%
YIELD_VALUE72,765,84072,765,8400.0%
EXIT_INIT_CHECK629,620629,6200.0%
LOAD_ATTR_CLASS501,740501,7400.0%
STORE_SUBSCR_DICT48,60048,6000.0%
CALL_STR_130,68030,6800.0%
LOAD_ATTR4,7604,7600.0%
CALL4,4404,4400.0%
LOAD_GLOBAL4,1604,1600.0%
BUILD_MAP2,5602,5600.0%
CALL_KW_PY2,5402,5400.0%
CALL_METHOD_DESCRIPTOR_NOARGS2,5402,5400.0%
LOAD_ATTR_METHOD_LAZY_DICT2,5402,5400.0%
COMPARE_OP1,5601,5600.0%
FOR_ITER1,5601,5600.0%
TO_BOOL8808800.0%
RESUME7007000.0%
STORE_ATTR5605600.0%
STORE_SUBSCR4004000.0%
CALL_KW2802800.0%
CALL_FUNCTION_EX1601600.0%
UNPACK_SEQUENCE1201200.0%
NOP80800.0%
CALL_INTRINSIC_180800.0%
LIST_EXTEND80800.0%
LOAD_FAST_CHECK80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
ENTER_EXECUTOR94,339,440
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
29,979,28099.8%18,736,58099.7%-37.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
67,5200.2%57,7000.3%-14.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure86047.3%78044.8%-9.3%
Success96052.7%96055.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
multiply different types52060.5%44056.4%-15.4%
remainder34039.5%34043.6%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
61,440100.0%9,000100.0%-85.4%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6,285,8402.8%859,5402.4%-86.3%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
219,250,24097.2%35,202,00097.6%-83.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure2,10066.9%78042.9%-62.9%
Success1,04033.1%1,04057.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
list slice2,100100.0%780100.0%-62.9%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
202,999,140100.0%23,768,320100.0%-88.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,2200.0%2,2200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success2,360100.0%2,360100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
14050.0%14050.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
142,752,580100.0%28,592,080100.0%-80.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
7800.0%7800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success780100.0%780100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
291,8200.3%2,1800.1%-99.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
96,995,86099.7%4,083,02099.9%-95.8%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure24,64099.9%1,88098.9%-92.4%
Success200.1%201.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
list24,640100.0%1,880100.0%-92.4%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
195,648,26099.9%7,831,54099.8%-96.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
270,8400.1%13,4800.2%-95.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
7800.0%7800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success5,860100.0%1,020100.0%-82.6%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
280,436,500100.0%29,447,360100.0%-89.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,3800.0%2,3800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success2,380100.0%2,380100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
122,179,680100.0%25,285,380100.0%-79.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,0800.0%2,0800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success2,080100.0%2,080100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,889,000100.0%895,24099.9%-52.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2800.0%2800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success280100.0%280100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
9,318,200100.0%3,043,120100.0%-67.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2000.0%2000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success200100.0%200100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
87,369,800100.0%8,689,040100.0%-90.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4400.0%4400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success440100.0%440100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
332,820100.0%285,880100.0%-14.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
600.0%600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success60100.0%60100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
103,459,0002.7%5,033,4400.6%-95.1%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
270,8400.0%14,1400.0%-94.8%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
1,481,946,16038.9%271,000,20030.5%-81.7%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
2,224,833,84058.4%612,569,56068.9%-72.5%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
CONTAINS_OP96,995,86093.8%4,083,02081.4%-95.8%
BINARY_SUBSCR6,285,8406.1%859,54017.1%-86.3%
BINARY_SLICE61,4400.1%9,0000.2%-85.4%
BINARY_OP67,5200.1%57,7001.1%-14.5%
LOAD_ATTR2,3800.0%2,3800.0%0.0%
CALL2,2200.0%2,2200.0%0.0%
LOAD_GLOBAL2,0800.0%2,0800.0%0.0%
COMPARE_OP7800.0%7800.0%0.0%
FOR_ITER7800.0%7800.0%0.0%
TO_BOOL4400.0%4400.0%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
FOR_ITER_LIST135,16049.9%6,06040.9%-95.5%
FOR_ITER_RANGE135,68050.1%7,42050.1%-94.5%
CACHE00.0%00.0%
EXIT_INIT_CHECK00.0%00.0%
GET_ITER00.0%00.0%
INTERPRETER_EXIT00.0%00.0%
MAKE_FUNCTION00.0%00.0%
NOP00.0%00.0%
POP_TOP00.0%
PUSH_NULL00.0%
RESUME6604.5%
RESUME_CHECK6604.5%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault76,596,08039.7%76,596,08039.7%0.0%
Calls to Python functions inlined116,241,76060.3%116,241,76060.3%0.0%
Calls via PyEval_EvalFrame (total)76,596,08039.7%76,596,08039.7%0.0%
Calls via PyEval_EvalFrame (vector)4000.0%4000.0%0.0%
Calls via PyEval_EvalFrame (generator)76,595,68039.7%76,595,68039.7%0.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)4000.0%4000.0%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)2600.0%2600.0%0.0%
Calls via PyEval_EvalFrame (function ex)1600.0%1600.0%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed116,871,78060.6%116,871,78060.6%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Allocations to 4 kbytes2,5600.0%5,5800.0%118.0%
Method cache collisions697502-28.0%
Mortal decrefs37,348,1301.3%46,786,6001.5%25.3%
Interpreter immortal increfs900,297,54037.6%708,611,24029.7%-21.3%
Interpreter mortal increfs1,210,830,32050.5%1,392,818,74058.3%15.0%
Interpreter mortal decrefs1,248,159,76044.5%1,420,719,38046.0%13.8%
Interpreter immortal decrefs1,020,216,68036.4%1,120,727,52036.3%9.9%
Method cache misses905849-6.2%
Method cache dunder misses196189-3.6%
Method cache hits140,195140,2510.0%
Immortal increfs254,581,78810.6%254,512,52410.7%-0.0%
Mortal increfs31,641,7941.3%31,649,2751.3%0.0%
Allocations from freelist11,675,64023.1%11,678,14023.1%0.0%
Frees to freelist11,676,72011,679,2200.0%
Allocations38,807,46076.9%38,811,90076.9%0.0%
Frees39,669,11839,670,9070.0%
Allocations to 512 bytes38,804,90076.9%38,806,30076.9%0.0%
Method cache dunder hits251,564251,5710.0%
Immortal decrefs499,843,41217.8%499,850,42216.2%0.0%
Allocations over 4 kbytes00.0%200.0%20 / 0 !!
Inline values629,760629,7600.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-html5lib-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-html5lib-vs-base.md new file mode 100644 index 00000000..1dc38842 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-html5lib-vs-base.md @@ -0,0 +1,3709 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
FOR_ITER_GEN1,383,500740-99.9%
JUMP_BACKWARD15,132,12014,400-99.9%
STORE_SUBSCR2,485,5404,440-99.8%
FOR_ITER_RANGE2,508,7805,220-99.8%
BINARY_SUBSCR_STR_INT6,937,94052,060-99.2%
LOAD_FAST_CHECK1,387,78011,400-99.2%
BINARY_OP_ADD_INT7,139,800225,340-96.8%
LIST_APPEND19,6801,380-93.0%
BINARY_OP1,199,280197,160-83.6%
CALL_BOUND_METHOD_EXACT_ARGS4,990,0601,155,720-76.8%
EXTENDED_ARG7,771,2002,169,660-72.1%
MAP_ADD4,0201,380-65.7%
FOR_ITER_TUPLE15,1805,220-65.6%
FOR_ITER2,335,2801,042,220-55.4%
CALL_BUILTIN_FAST_WITH_KEYWORDS11,9005,640-52.6%
POP_JUMP_IF_NONE2,781,4001,398,960-49.7%
COMPARE_OP_INT18,673,04010,298,800-44.8%
COMPARE_OP3,057,0601,775,860-41.9%
STORE_ATTR_INSTANCE_VALUE17,154,94010,262,300-40.2%
RESUME_CHECK30,150,40018,205,080-39.6%
LOAD_ATTR_INSTANCE_VALUE110,670,64068,814,900-37.8%
BINARY_SUBSCR_TUPLE_INT57,56036,040-37.4%
LOAD_FAST228,742,000152,062,560-33.5%
LOAD_SPECIAL720480-33.3%
STORE_FAST58,171,14040,581,080-30.2%
LOAD_ATTR_METHOD_WITH_VALUES13,220,5809,379,880-29.1%
POP_JUMP_IF_TRUE21,060,98015,759,300-25.2%
CALL_PY_EXACT_ARGS15,482,38011,988,120-22.6%
FOR_ITER_LIST1,498,9401,186,720-20.8%
LOAD_ATTR_CLASS178,320142,280-20.2%
TO_BOOL_BOOL17,456,36013,971,080-20.0%
LOAD_FAST_LOAD_FAST19,179,12015,403,360-19.7%
UNPACK_SEQUENCE_LIST5,2604,260-19.0%
POP_TOP9,346,8407,799,820-16.6%
BINARY_OP_INPLACE_ADD_UNICODE9,8808,340-15.6%
LOAD_CONST68,866,62058,733,800-14.7%
TO_BOOL9,517,4608,132,320-14.6%
POP_JUMP_IF_FALSE65,569,64056,209,280-14.3%
LOAD_FAST_AND_CLEAR860740-14.0%
CONTAINS_OP_SET7,618,9006,629,920-13.0%
CALL_BUILTIN_O39,42036,100-8.4%
CALL_METHOD_DESCRIPTOR_FAST2,170,6001,988,800-8.4%
POP_JUMP_IF_NOT_NONE3,034,2802,856,240-5.9%
LOAD_ATTR_SLOT7,795,2207,423,440-4.8%
TO_BOOL_NONE507,320485,420-4.3%
STORE_FAST_STORE_FAST966,220925,780-4.2%
UNPACK_SEQUENCE_TWO_TUPLE963,200923,640-4.1%
CONTAINS_OP_DICT915,860881,560-3.7%
PUSH_NULL969,000934,240-3.6%
NOP2,313,1802,233,640-3.4%
BINARY_OP_SUBTRACT_INT546,800529,720-3.1%
BINARY_SLICE1,285,7601,245,980-3.1%
STORE_FAST_LOAD_FAST15,08014,640-2.9%
BINARY_SUBSCR_DICT20,047,24019,582,200-2.3%
IS_OP2,176,4402,127,660-2.2%
CALL_LEN3,718,5603,638,080-2.2%
GET_ITER2,279,4402,231,800-2.1%
CALL_BUILTIN_CLASS1,509,3001,480,880-1.9%
LOAD_GLOBAL_BUILTIN8,508,0008,349,580-1.9%
BINARY_SUBSCR_GETITEM17,14016,860-1.6%
LOAD_ATTR_METHOD_NO_DICT13,200,34012,988,080-1.6%
LOAD_ATTR_METHOD_LAZY_DICT11,68011,540-1.2%
TO_BOOL_STR43,40042,960-1.0%
BINARY_SUBSCR_LIST_INT928,880920,260-0.9%
LOAD_GLOBAL_MODULE18,022,22017,871,620-0.8%
BINARY_SUBSCR6,979,5606,928,000-0.7%
CALL_BUILTIN_FAST635,680631,080-0.7%
CALL_ISINSTANCE1,993,2401,983,340-0.5%
CALL_LIST_APPEND2,269,6802,259,560-0.4%
BUILD_TUPLE2,228,5602,219,720-0.4%
CALL_METHOD_DESCRIPTOR_O4,014,6203,999,740-0.4%
JUMP_FORWARD8,379,5208,350,320-0.3%
RETURN_CONST13,791,10013,745,920-0.3%
CONTAINS_OP1,162,1801,159,520-0.2%
CALL_NON_PY_GENERAL2,024,9002,021,040-0.2%
COMPARE_OP_STR14,580,12014,557,340-0.2%
STORE_SUBSCR_DICT2,871,2802,867,060-0.1%
CALL_METHOD_DESCRIPTOR_NOARGS2,125,0202,122,220-0.1%
RETURN_VALUE15,428,44015,414,660-0.1%
TO_BOOL_INT516,260515,900-0.1%
LOAD_ATTR6,504,2606,500,860-0.1%
COPY4,314,6204,312,760-0.0%
CALL_PY_GENERAL2,040,2802,039,480-0.0%
LOAD_ATTR_MODULE453,200453,080-0.0%
LOAD_ATTR_PROPERTY4,911,3604,910,200-0.0%
SWAP4,425,2004,424,340-0.0%
TO_BOOL_LIST8,689,2408,688,180-0.0%
BUILD_LIST3,721,4403,721,000-0.0%
BINARY_OP_ADD_UNICODE3,481,6203,481,360-0.0%
STORE_SUBSCR_LIST_INT897,140897,120-0.0%
STORE_ATTR1,448,4801,448,460-0.0%
TO_BOOL_ALWAYS_TRUE2,934,5402,934,5400.0%
BUILD_MAP1,522,9401,522,9400.0%
YIELD_VALUE1,383,4401,383,4400.0%
FORMAT_SIMPLE891,600891,6000.0%
CONVERT_VALUE891,520891,5200.0%
INTERPRETER_EXIT508,260508,2600.0%
CALL_KW_PY499,420499,4200.0%
LOAD_DEREF449,800449,8000.0%
COPY_FREE_VARS449,060449,0600.0%
EXIT_INIT_CHECK448,640448,6400.0%
CALL_ALLOC_AND_ENTER_INIT448,640448,6400.0%
BUILD_STRING445,800445,8000.0%
CALL17,72017,7200.0%
STORE_ATTR_SLOT15,34015,3400.0%
STORE_NAME11,66011,6600.0%
LOAD_GLOBAL9,6409,6400.0%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS8,0208,0200.0%
MAKE_FUNCTION7,0807,0800.0%
LOAD_NAME6,5206,5200.0%
RESUME4,2804,2800.0%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES2,3802,3800.0%
CALL_FUNCTION_EX1,5601,5600.0%
DICT_MERGE1,4801,4800.0%
MAKE_CELL1,1001,1000.0%
LOAD_LOCALS9609600.0%
CALL_TYPE_19609600.0%
SET_FUNCTION_ATTRIBUTE9009000.0%
STORE_DEREF8808800.0%
CHECK_EXC_MATCH8208200.0%
POP_EXCEPT8208200.0%
PUSH_EXC_INFO8208200.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK7807800.0%
CALL_TUPLE_17207200.0%
UNPACK_SEQUENCE_TUPLE6606600.0%
LOAD_BUILD_CLASS6406400.0%
UNARY_NOT6206200.0%
BINARY_OP_MULTIPLY_INT6006000.0%
IMPORT_FROM4404400.0%
IMPORT_NAME4204200.0%
CALL_KW4004000.0%
UNPACK_SEQUENCE4004000.0%
LOAD_FROM_DICT_OR_DEREF3203200.0%
LOAD_SUPER_ATTR_ATTR2802800.0%
RETURN_GENERATOR2402400.0%
LIST_EXTEND2402400.0%
CALL_INTRINSIC_12202200.0%
LOAD_SUPER_ATTR_METHOD2202200.0%
JUMP_BACKWARD_NO_INTERRUPT2002000.0%
UNARY_NEGATIVE1801800.0%
CALL_KW_NON_PY1801800.0%
END_FOR1601600.0%
UNARY_INVERT1601600.0%
LOAD_SUPER_ATTR1201200.0%
CALL_STR_11201200.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
DELETE_SUBSCR40400.0%
COMPARE_OP_FLOAT40400.0%
DICT_UPDATE20200.0%
ENTER_EXECUTOR10,905,060
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,196,7809.7%195,0004.4%-83.7%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
11,178,76090.3%4,245,42095.6%-62.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,52060.8%1,18054.6%-22.4%
Success98039.2%98045.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
xor48031.6%24020.3%-50.0%
floor divide805.3%403.4%-50.0%
add different types805.3%605.1%-25.0%
remainder24015.8%20016.9%-16.7%
multiply different types28018.4%28023.7%0.0%
add other16010.5%16013.6%0.0%
or1006.6%1008.5%0.0%
and int805.3%806.8%0.0%
and different types201.3%201.7%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,285,760100.0%1,245,980100.0%-3.1%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
27,956,90079.9%20,575,56074.7%-26.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6,968,88019.9%6,917,40025.1%-0.7%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
31,8600.1%31,8600.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure7,84069.6%7,76069.4%-1.0%
Success3,42030.4%3,42030.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
buffer slice82010.5%80010.3%-2.4%
out of range5,10065.1%5,04064.9%-1.2%
buffer int1,14014.5%1,14014.7%0.0%
list slice6408.2%6408.2%0.0%
string slice1401.8%1401.8%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
7,287,04016.4%3,549,66010.8%-51.3%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
37,121,94083.6%29,353,00089.2%-20.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
10,2800.0%10,2800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success144,960100.0%74,44099.9%-48.6%
Failure600.0%600.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
init not inline values80133.3%80133.3%0.0%
out of versions60100.0%60100.0%0.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
20050.0%20050.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3,050,5808.4%1,770,0006.6%-42.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
33,233,70091.5%24,836,68093.3%-25.3%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
19,5000.1%19,5000.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure3,90057.2%3,28052.9%-15.9%
Success2,92042.8%2,92047.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple76019.5%44013.4%-42.1%
baseobject74019.0%60018.3%-18.9%
bytes40010.3%34010.4%-15.0%
different types1,62041.5%1,52046.3%-6.2%
long float2406.2%2407.3%0.0%
other1203.1%1203.7%0.0%
big int200.5%200.6%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
8,534,76088.0%7,511,48086.6%-12.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,158,84012.0%1,156,20013.3%-0.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure2,40071.9%2,38071.7%-0.8%
Success94028.1%94028.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple1,18049.2%1,16048.7%-1.7%
list1,02042.5%1,02042.9%0.0%
other1606.7%1606.7%0.0%
str401.7%401.7%0.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
5,405,48069.8%1,197,90053.5%-77.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,333,38030.1%1,040,76046.5%-55.4%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
9200.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,54081.1%1,14078.1%-26.0%
Success36018.9%32021.9%-11.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
reversed list80051.9%56049.1%-30.0%
set16010.4%12010.5%-25.0%
dict items50032.5%38033.3%-24.0%
other603.9%605.3%0.0%
dict keys201.3%201.8%0.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
150,413,42095.8%104,095,48094.1%-30.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6,480,2604.1%6,476,9005.9%-0.1%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
400.0%400.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
31,0800.0%31,0800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure8,96036.7%8,92036.6%-0.4%
Success15,46063.3%15,46063.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
not managed dict5806.5%5406.1%-6.9%
method5,62062.7%5,62063.0%0.0%
overriding descriptor1,44016.1%1,44016.1%0.0%
mutable class4805.4%4805.4%0.0%
overridden600.7%600.7%0.0%
metaclass attribute400.4%400.4%0.0%
class attr simple400.4%400.4%0.0%
out of versions200.2%200.2%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
26,528,780100.0%26,219,760100.0%-1.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4,9600.0%4,9600.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1,4400.0%1,4400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success4,680100.0%4,680100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_SUPER_ATTR + +
+ specialization stats for LOAD_SUPER_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
609.7%609.7%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
50080.6%50080.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success60100.0%60100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
17,146,38092.1%10,253,74087.4%-40.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,442,8407.7%1,442,82012.3%-0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
23,9000.1%23,9000.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success3,88064.7%3,88064.7%0.0%
Failure2,12035.3%2,12035.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
overriding descriptor1,14053.8%1,14053.8%0.0%
property54025.5%54025.5%0.0%
split dict40018.9%40018.9%0.0%
no dict401.9%401.9%0.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,484,36039.7%3,9200.1%-99.8%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
3,768,42060.3%3,764,18099.9%-0.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure72061.0%6011.5%-91.7%
Success46039.0%46088.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
bytearray int70097.2%4066.7%-94.3%
list slice202.8%2033.3%0.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
9,512,22025.9%8,127,48025.5%-14.6%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
27,145,16073.9%23,636,12074.2%-12.9%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
67,9800.2%67,9800.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure3,54054.6%3,14051.6%-11.3%
Success2,94045.4%2,94048.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
sequence2,20062.1%1,86059.2%-15.5%
dict62017.5%56017.8%-9.7%
mapping38010.7%38012.1%0.0%
bytes2206.2%2207.0%0.0%
other1002.8%1003.2%0.0%
number200.6%200.6%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
969,120100.0%928,560100.0%-4.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2000.0%2000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success200100.0%200100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
7,463,8800.8%3,725,8800.5%-50.1%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
382,062,26038.4%281,162,18037.7%-26.4%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
569,110,48057.2%431,599,22057.9%-24.2%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
36,003,1403.6%28,463,1003.8%-20.9%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
BINARY_OP1,196,7803.3%195,0000.7%-83.7%
FOR_ITER2,333,3806.5%1,040,7603.7%-55.4%
COMPARE_OP3,050,5808.5%1,770,0006.2%-42.0%
TO_BOOL9,512,22026.5%8,127,48028.6%-14.6%
BINARY_SLICE1,285,7603.6%1,245,9804.4%-3.1%
BINARY_SUBSCR6,968,88019.4%6,917,40024.4%-0.7%
CONTAINS_OP1,158,8403.2%1,156,2004.1%-0.2%
LOAD_ATTR6,480,26018.0%6,476,90022.8%-0.1%
STORE_ATTR1,442,8404.0%1,442,8205.1%-0.0%
STORE_SUBSCR2,484,3606.9%
CALL10,2800.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
CALL_BOUND_METHOD_EXACT_ARGS3,465,18046.4%362,5609.7%-89.5%
CALL_PY_EXACT_ARGS3,466,68046.4%2,831,92076.0%-18.3%
CALL_METHOD_DESCRIPTOR_O344,4004.6%344,4009.2%0.0%
TO_BOOL_NONE35,5000.5%35,5001.0%0.0%
TO_BOOL_STR31,9200.4%31,9200.9%0.0%
BINARY_SUBSCR_STR_INT31,5000.4%31,5000.8%0.0%
COMPARE_OP_STR19,5000.3%19,5000.5%0.0%
LOAD_ATTR_SLOT16,0400.2%16,0400.4%0.0%
STORE_ATTR_SLOT14,0800.2%14,0800.4%0.0%
CALL_METHOD_DESCRIPTOR_FAST10,3400.1%10,3400.3%0.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault508,6001.7%508,6001.7%0.0%
Calls to Python functions inlined29,646,32098.3%29,646,32098.3%0.0%
Calls via PyEval_EvalFrame (total)508,6001.7%508,6001.7%0.0%
Calls via PyEval_EvalFrame (vector)508,4201.7%508,4201.7%0.0%
Calls via PyEval_EvalFrame (generator)1800.0%1800.0%0.0%
Calls via PyEval_EvalFrame (legacy)400.0%400.0%0.0%
Calls via PyEval_EvalFrame (function vectorcall)507,7401.7%507,7401.7%0.0%
Calls via PyEval_EvalFrame (build class)6400.0%6400.0%0.0%
Calls via PyEval_EvalFrame (slot)20,7200.1%20,7200.1%0.0%
Calls via PyEval_EvalFrame (function ex)4800.0%4800.0%0.0%
Calls via PyEval_EvalFrame (api)448,5601.5%448,5601.5%0.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created1,5200.0%1,5200.0%0.0%
Frames pushed29,219,88096.9%29,219,88096.9%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache misses49,81614,551-70.8%
Method cache collisions50,01615,098-69.8%
Method cache dunder misses2,7073,01111.2%
Interpreter mortal increfs435,052,98056.2%471,781,66059.0%8.4%
Interpreter immortal decrefs160,470,76020.3%172,807,52020.6%7.7%
Interpreter mortal decrefs482,668,64061.1%519,148,70061.8%7.6%
Interpreter immortal increfs152,281,08019.7%141,995,76017.8%-6.8%
Allocations to 4 kbytes279,3800.6%281,7200.6%0.8%
Method cache hits9,032,6249,067,8490.4%
Mortal decrefs66,182,6978.4%66,415,8507.9%0.4%
Allocations over 4 kbytes11,7000.0%11,7200.0%0.2%
Immortal decrefs81,205,39310.3%81,174,8269.7%-0.0%
Immortal increfs105,065,12013.6%105,037,55213.1%-0.0%
Mortal increfs81,176,52810.5%81,156,33810.1%-0.0%
Frees30,421,71730,426,2690.0%
Method cache dunder hits2,291,3332,291,009-0.0%
Allocations31,695,70072.9%31,698,42072.9%0.0%
Frees to freelist11,765,26011,765,6400.0%
Allocations from freelist11,792,02027.1%11,792,40027.1%0.0%
Allocations to 512 bytes31,404,62072.2%31,404,98072.2%0.0%
Inline values466,360466,3600.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
11,300455,22032,061,0601,300455,24032,068,960
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-json-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-json-vs-base.md new file mode 100644 index 00000000..6572d50d --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-json-vs-base.md @@ -0,0 +1,2237 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD2,754,560640-100.0%
FOR_ITER_LIST2,754,540660-100.0%
CALL_PY_GENERAL5,503,9601,320-100.0%
LOAD_ATTR_METHOD_WITH_VALUES5,503,9601,320-100.0%
TO_BOOL_BOOL5,503,9601,320-100.0%
CALL_ISINSTANCE2,751,980660-100.0%
CALL_KW_PY2,751,980660-100.0%
CALL_LEN2,751,980660-100.0%
COMPARE_OP_INT2,751,980660-100.0%
TO_BOOL_STR2,751,980660-100.0%
POP_JUMP_IF_NOT_NONE16,512,0004,080-100.0%
POP_JUMP_IF_FALSE8,256,0002,040-100.0%
CALL_METHOD_DESCRIPTOR_FAST8,256,0002,040-100.0%
POP_JUMP_IF_TRUE5,504,0001,360-100.0%
JUMP_FORWARD2,752,000680-100.0%
LOAD_GLOBAL_BUILTIN8,256,0602,100-100.0%
UNPACK_SEQUENCE_TWO_TUPLE5,504,1001,460-100.0%
STORE_FAST_STORE_FAST5,504,1601,520-100.0%
NOP2,752,080760-100.0%
BUILD_TUPLE2,752,080760-100.0%
RETURN_VALUE8,256,3202,360-100.0%
RESUME_CHECK8,256,3602,400-100.0%
LOAD_ATTR_INSTANCE_VALUE2,752,140820-100.0%
LOAD_CONST8,256,4802,520-100.0%
TO_BOOL2,752,980880-100.0%
LOAD_FAST52,299,36018,280-100.0%
LOAD_FAST_LOAD_FAST11,010,9604,380-100.0%
LOAD_ATTR_METHOD_NO_DICT8,258,6003,380-100.0%
CALL_NON_PY_GENERAL8,261,2003,760-100.0%
PUSH_NULL8,261,4404,000-100.0%
LOAD_GLOBAL_MODULE5,509,3603,240-99.9%
POP_TOP2,752,2802,300-99.9%
LOAD_ATTR_MODULE2,757,1802,380-99.9%
STORE_FAST5,514,7205,160-99.9%
FOR_ITER_RANGE2,620360-86.3%
GET_ITER2,640460-82.6%
BINARY_OP_SUBTRACT_FLOAT2,5401,240-51.2%
BINARY_OP_ADD_FLOAT2,5401,280-49.6%
CALL_LIST_APPEND2,6001,340-48.5%
CALL9209200.0%
LOAD_ATTR7607600.0%
LOAD_GLOBAL5205200.0%
LOAD_DEREF2402400.0%
STORE_ATTR_INSTANCE_VALUE2402400.0%
BINARY_OP1801800.0%
INTERPRETER_EXIT1601600.0%
BUILD_LIST1601600.0%
CALL_FUNCTION_EX1601600.0%
LOAD_SPECIAL1601600.0%
RETURN_CONST1601600.0%
SWAP1601600.0%
CALL_PY_EXACT_ARGS1401400.0%
UNPACK_SEQUENCE1201200.0%
RESUME1201200.0%
BINARY_SLICE80800.0%
CALL_INTRINSIC_180800.0%
COPY80800.0%
COPY_FREE_VARS80800.0%
FOR_ITER80800.0%
LIST_EXTEND80800.0%
LOAD_FAST_CHECK80800.0%
CALL_BUILTIN_FAST80800.0%
LOAD_ATTR_CLASS80800.0%
CALL_METHOD_DESCRIPTOR_NOARGS60600.0%
CALL_BUILTIN_CLASS60600.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS60600.0%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS60600.0%
CALL_KW40400.0%
COMPARE_OP40400.0%
ENTER_EXECUTOR3,860
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
5,02095.4%2,46091.1%-51.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1202.3%1204.4%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
601.1%602.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success4066.7%4066.7%0.0%
Failure2033.3%2033.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
add other20100.0%20100.0%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
80100.0%80100.0%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
13,762,960100.0%5,10083.9%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4600.0%4607.6%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
600.0%601.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success480100.0%480100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2050.0%2050.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,751,980100.0%66094.3%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.0%202.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,757,160100.0%1,02092.7%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.0%403.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
19,271,960100.0%7,98091.3%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4400.0%4405.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success28087.5%28087.5%0.0%
Failure4012.5%4012.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
not managed dict2050.0%2050.0%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
13,765,420100.0%5,34091.1%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2600.0%2604.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success260100.0%260100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
240100.0%240100.0%0.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
8,255,94075.0%1,98069.2%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,752,06025.0%74025.9%-100.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure86093.5%8057.1%-90.7%
Success606.5%6042.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
dict860100.0%80100.0%-90.7%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
5,504,100100.0%1,46092.4%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
600.0%603.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success60100.0%60100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
90,848,28038.4%34,38036.2%-100.0%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
143,142,80060.5%56,88059.9%-100.0%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
2,755,7201.2%3,6203.8%-99.9%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
1200.0%1200.1%0.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
TO_BOOL2,752,06099.9%74033.0%-100.0%
CALL4600.0%46020.5%0.0%
LOAD_ATTR4400.0%44019.6%0.0%
LOAD_GLOBAL2600.0%26011.6%0.0%
BINARY_OP1200.0%1205.4%0.0%
BINARY_SLICE800.0%803.6%0.0%
UNPACK_SEQUENCE600.0%602.7%0.0%
FOR_ITER400.0%401.8%0.0%
CALL_KW200.0%200.9%0.0%
COMPARE_OP200.0%200.9%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
BINARY_OP_ADD_FLOAT6050.0%6050.0%0.0%
CALL_METHOD_DESCRIPTOR_NOARGS6050.0%6050.0%0.0%
CACHE00.0%00.0%
GET_ITER00.0%00.0%
INTERPRETER_EXIT00.0%00.0%
NOP00.0%00.0%
POP_TOP00.0%00.0%
PUSH_NULL00.0%00.0%
RETURN_VALUE00.0%00.0%
BUILD_LIST00.0%00.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault1600.0%1600.0%0.0%
Calls to Python functions inlined8,256,320100.0%8,256,320100.0%0.0%
Calls via PyEval_EvalFrame (total)1600.0%1600.0%0.0%
Calls via PyEval_EvalFrame (vector)1600.0%1600.0%0.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)1600.0%1600.0%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)1600.0%1600.0%0.0%
Calls via PyEval_EvalFrame (api)800.0%800.0%0.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed8,256,480100.0%8,256,480100.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache dunder misses20-100.0%
Interpreter immortal increfs24,769,4804.5%19,266,8403.5%-22.2%
Allocations over 4 kbytes4000.0%4400.0%10.0%
Method cache collisions3143243.2%
Interpreter mortal increfs115,615,84020.8%112,867,14020.6%-2.4%
Interpreter mortal decrefs129,380,22022.0%126,628,98021.6%-2.1%
Method cache misses404397-1.7%
Method cache dunder hits2382400.8%
Method cache hits3,9363,9430.2%
Allocations to 4 kbytes135,4400.1%135,4600.1%0.0%
Interpreter immortal decrefs27,524,1004.7%27,528,0004.7%0.0%
Mortal decrefs371,856,29363.1%371,859,18963.4%0.0%
Mortal increfs253,374,19245.6%253,374,54346.2%0.0%
Immortal decrefs60,367,17910.2%60,367,24510.3%0.0%
Allocations from freelist22,024,60014.3%22,024,62014.3%0.0%
Frees to freelist22,025,20022,025,2200.0%
Immortal increfs162,422,86029.2%162,422,99129.6%0.0%
Allocations132,238,50085.7%132,238,56085.7%0.0%
Frees137,741,994137,741,9990.0%
Allocations to 512 bytes132,102,66085.6%132,102,66085.6%0.0%
Inline values80800.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-json_dumps-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-json_dumps-vs-base.md new file mode 100644 index 00000000..9e190620 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-json_dumps-vs-base.md @@ -0,0 +1,2028 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD5,127,680960-100.0%
LOAD_ATTR_METHOD_WITH_VALUES10,242,5203,600-100.0%
CALL_KW_PY5,121,2601,800-100.0%
CALL_PY_EXACT_ARGS5,121,2601,800-100.0%
CALL_PY_GENERAL5,121,2601,800-100.0%
LOAD_ATTR_CLASS5,121,2601,800-100.0%
LOAD_GLOBAL_MODULE35,848,94012,720-100.0%
POP_JUMP_IF_NOT_NONE20,485,1207,280-100.0%
POP_JUMP_IF_NONE10,242,5603,640-100.0%
MAKE_FUNCTION5,121,2801,820-100.0%
UNARY_NEGATIVE5,121,2801,820-100.0%
BUILD_MAP5,121,2801,820-100.0%
SET_FUNCTION_ATTRIBUTE5,121,2801,820-100.0%
POP_JUMP_IF_FALSE35,849,04012,820-100.0%
LOAD_ATTR_MODULE5,121,3801,920-100.0%
FOR_ITER_RANGE5,127,7202,160-100.0%
RESUME_CHECK15,365,1006,720-100.0%
TO_BOOL5,123,1202,320-100.0%
TO_BOOL_BOOL51,212,6005,137,460-90.0%
FOR_ITER_LIST6,3801,560-75.5%
JUMP_FORWARD20,485,1205,126,740-75.0%
POP_JUMP_IF_TRUE20,485,1205,126,740-75.0%
STORE_FAST35,850,64010,252,440-71.4%
UNPACK_SEQUENCE_TWO_TUPLE5,1001,500-70.6%
STORE_FAST_STORE_FAST5,1201,520-70.3%
LOAD_FAST153,646,72046,133,560-70.0%
LOAD_CONST25,606,48010,248,100-60.0%
GET_ITER6,4802,880-55.6%
PUSH_NULL10,244,1605,123,800-50.0%
CALL_ISINSTANCE10,242,5205,123,060-50.0%
LOAD_GLOBAL_BUILTIN30,727,62015,369,240-50.0%
BUILD_TUPLE10,242,5605,123,100-50.0%
LOAD_FAST_LOAD_FAST10,242,5605,123,100-50.0%
LOAD_ATTR_INSTANCE_VALUE56,629,30031,032,000-45.2%
POP_TOP5,122,6405,124,3000.0%
CALL_NON_PY_GENERAL10,243,96010,243,060-0.0%
RETURN_VALUE15,363,92015,363,9200.0%
CALL_METHOD_DESCRIPTOR_O5,121,2605,121,2600.0%
LOAD_ATTR_METHOD_NO_DICT5,121,2605,121,2600.0%
INTERPRETER_EXIT1,2801,2800.0%
RETURN_CONST1,2801,2800.0%
LOAD_ATTR7207200.0%
LOAD_GLOBAL6406400.0%
CALL4804800.0%
LOAD_DEREF1601600.0%
FOR_ITER1201200.0%
RESUME1001000.0%
NOP80800.0%
CALL_FUNCTION_EX80800.0%
COPY_FREE_VARS80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
CALL_BUILTIN_CLASS60600.0%
COMPARE_OP_INT60600.0%
BINARY_OP40400.0%
CALL_KW40400.0%
COMPARE_OP40400.0%
UNPACK_SEQUENCE40400.0%
ENTER_EXECUTOR5,123,220
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2020.0%2020.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6060.0%6060.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
20,485,100100.0%10,246,180100.0%-50.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2400.0%2400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success260100.0%260100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2050.0%2050.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2020.0%2020.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6060.0%6060.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
5,134,100100.0%3,72096.9%-99.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
600.0%601.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success60100.0%60100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
66,576,50081.0%20,501,36056.7%-69.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3600.0%3600.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
15,659,22019.0%15,659,22043.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success295,800100.0%295,800100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
66,576,560100.0%15,381,960100.0%-76.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3200.0%3200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success320100.0%320100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5,121,4809.1%2,0200.0%-100.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
51,212,60090.9%5,137,460100.0%-90.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,44087.8%10033.3%-93.1%
Success20012.2%20066.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
dict1,440100.0%100100.0%-93.1%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
5,10099.2%1,50097.4%-70.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.4%201.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
5,125,2400.8%4,4400.0%-99.9%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
245,841,66036.9%61,525,68031.5%-75.0%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
399,494,10060.0%117,908,46060.4%-70.5%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
15,659,2202.4%15,659,2208.0%0.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
TO_BOOL5,121,480100.0%2,02065.6%-100.0%
LOAD_ATTR3600.0%36011.7%0.0%
LOAD_GLOBAL3200.0%32010.4%0.0%
CALL2400.0%2407.8%0.0%
FOR_ITER600.0%601.9%0.0%
BINARY_OP200.0%200.6%0.0%
CALL_KW200.0%200.6%0.0%
COMPARE_OP200.0%200.6%0.0%
UNPACK_SEQUENCE200.0%200.6%0.0%
BINARY_SLICE00.0%00.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
LOAD_ATTR_INSTANCE_VALUE15,659,220100.0%15,659,220100.0%0.0%
CACHE00.0%00.0%
GET_ITER00.0%00.0%
INTERPRETER_EXIT00.0%00.0%
MAKE_FUNCTION00.0%00.0%
NOP00.0%00.0%
POP_TOP00.0%00.0%
PUSH_NULL00.0%00.0%
RETURN_VALUE00.0%00.0%
UNARY_NEGATIVE00.0%00.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault1,2800.0%1,2800.0%0.0%
Calls to Python functions inlined15,363,920100.0%15,363,920100.0%0.0%
Calls via PyEval_EvalFrame (total)1,2800.0%1,2800.0%0.0%
Calls via PyEval_EvalFrame (vector)1,2800.0%1,2800.0%0.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)1,2800.0%1,2800.0%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)800.0%800.0%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed15,365,200100.0%15,365,200100.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache dunder misses264573.1%
Interpreter immortal increfs133,154,70012.2%117,796,32010.9%-11.5%
Interpreter immortal decrefs98,295,7409.1%103,419,0209.5%5.2%
Method cache collisions2412524.6%
Method cache misses237235-0.8%
Interpreter mortal increfs215,121,42019.7%215,131,66020.0%0.0%
Interpreter mortal decrefs260,233,10024.0%260,242,16023.9%0.0%
Frees148,148,665148,150,6870.0%
Mortal decrefs582,745,90653.9%582,753,42253.6%0.0%
Mortal increfs447,061,13841.0%447,065,39241.5%0.0%
Method cache dunder hits10,242,61410,242,595-0.0%
Frees to freelist46,091,62046,091,6600.0%
Allocations from freelist46,091,66023.7%46,091,70023.7%0.0%
Immortal decrefs140,835,42213.0%140,835,53813.0%0.0%
Immortal increfs296,025,40927.1%296,025,60827.5%0.0%
Allocations148,148,70076.3%148,148,78076.3%0.0%
Allocations to 512 bytes148,148,70076.3%148,148,72076.3%0.0%
Method cache hits15,659,60315,659,6050.0%
Allocations to 4 kbytes00.0%200.0%20 / 0 !!
Allocations over 4 kbytes00.0%400.0%40 / 0 !!
Inline values00
Materialize dict (on request)00
Materialize dict (new key)00
Materialize dict (too big)00
Materialize dict (str subclass)00
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-json_loads-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-json_loads-vs-base.md new file mode 100644 index 00000000..3bc19a98 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-json_loads-vs-base.md @@ -0,0 +1,1888 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD81,920640-99.2%
FOR_ITER_RANGE20,540360-98.2%
EXTENDED_ARG143,36021,100-85.3%
FOR_ITER_TUPLE81,90020,760-74.7%
STORE_FAST1,311,1201,129,240-13.9%
PUSH_NULL3,707,2003,322,780-10.4%
CALL_NON_PY_GENERAL3,706,9803,323,820-10.3%
LOAD_FAST22,160,00019,947,680-10.0%
LOAD_ATTR_MODULE1,228,5201,106,240-10.0%
LOAD_GLOBAL_MODULE2,457,3002,212,740-10.0%
TO_BOOL_BOOL2,457,5602,213,000-10.0%
CALL_ISINSTANCE1,228,7801,106,500-10.0%
POP_JUMP_IF_NOT_NONE7,372,8006,639,120-10.0%
JUMP_FORWARD1,228,8001,106,520-10.0%
POP_JUMP_IF_TRUE1,228,8001,106,520-10.0%
TO_BOOL1,229,3801,107,060-9.9%
LOAD_GLOBAL_BUILTIN3,686,4003,320,820-9.9%
POP_JUMP_IF_FALSE3,686,4803,320,900-9.9%
CALL_PY_GENERAL2,457,1802,213,880-9.9%
LOAD_ATTR_METHOD_WITH_VALUES2,457,5602,214,260-9.9%
CALL_METHOD_DESCRIPTOR_FAST3,686,3403,322,020-9.9%
LOAD_ATTR_METHOD_NO_DICT3,686,3403,322,020-9.9%
LOAD_CONST3,686,4803,322,160-9.9%
UNPACK_SEQUENCE_TWO_TUPLE2,457,5602,215,520-9.8%
CALL_KW_PY1,228,7801,107,760-9.8%
CALL_LEN1,228,7801,107,760-9.8%
LOAD_ATTR_INSTANCE_VALUE1,228,7801,107,760-9.8%
LOAD_FAST_LOAD_FAST4,915,2004,431,120-9.8%
STORE_FAST_STORE_FAST2,457,6002,215,560-9.8%
BUILD_TUPLE1,228,8001,107,780-9.8%
COMPARE_OP_INT1,228,8401,107,820-9.8%
NOP1,228,8801,107,860-9.8%
RESUME_CHECK3,706,8603,342,540-9.8%
RETURN_VALUE3,686,4803,362,920-8.8%
POP_TOP1,249,3601,149,080-8.0%
GET_ITER20,56020,5600.0%
INTERPRETER_EXIT20,48020,4800.0%
RETURN_CONST20,48020,4800.0%
CALL1,3601,3600.0%
LOAD_ATTR1,1201,1200.0%
LOAD_GLOBAL1,0801,0800.0%
LOAD_DEREF1601600.0%
RESUME1001000.0%
CALL_FUNCTION_EX80800.0%
COMPARE_OP80800.0%
COPY_FREE_VARS80800.0%
FOR_ITER80800.0%
UNPACK_SEQUENCE80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
CALL_BUILTIN_CLASS60600.0%
BINARY_OP40400.0%
CALL_KW40400.0%
ENTER_EXECUTOR61,180
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2020.0%2020.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6060.0%6060.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6,143,960100.0%5,536,340100.0%-9.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6800.0%6800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success700100.0%700100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2050.0%2050.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,228,840100.0%1,107,820100.0%-9.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.0%400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
102,44099.9%21,12099.6%-79.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.0%400.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
8,601,200100.0%7,750,280100.0%-9.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5600.0%5600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success560100.0%560100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6,143,700100.0%5,533,560100.0%-9.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5400.0%5400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success540100.0%540100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,457,56066.7%2,213,00066.7%-10.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,228,84033.3%1,106,56033.3%-10.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure50092.6%46092.0%-8.0%
Success407.4%408.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
dict500100.0%460100.0%-8.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,457,560100.0%2,215,520100.0%-9.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.0%400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
59,435,22060.1%53,414,10060.1%-10.1%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
38,235,12038.7%34,365,70038.7%-10.1%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
1,233,2601.2%1,110,9401.2%-9.9%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
00.0%00.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
TO_BOOL1,228,84099.8%1,106,56099.8%-10.0%
CALL6800.1%6800.1%0.0%
LOAD_ATTR5600.0%5600.1%0.0%
LOAD_GLOBAL5400.0%5400.0%0.0%
COMPARE_OP400.0%400.0%0.0%
FOR_ITER400.0%400.0%0.0%
UNPACK_SEQUENCE400.0%400.0%0.0%
BINARY_OP200.0%200.0%0.0%
CALL_KW200.0%200.0%0.0%
BINARY_SLICE00.0%00.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault20,4800.6%20,4800.6%0.0%
Calls to Python functions inlined3,686,48099.4%3,686,48099.4%0.0%
Calls via PyEval_EvalFrame (total)20,4800.6%20,4800.6%0.0%
Calls via PyEval_EvalFrame (vector)20,4800.6%20,4800.6%0.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)20,4800.6%20,4800.6%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)800.0%800.0%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed3,706,960100.0%3,706,960100.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache misses9711316.5%
Method cache collisions61668.2%
Method cache hits583567-2.7%
Interpreter immortal increfs13,128,0403.0%12,925,5003.0%-1.5%
Interpreter immortal decrefs14,787,1203.2%14,848,3403.3%0.4%
Interpreter mortal increfs47,267,88010.8%47,346,92010.8%0.2%
Interpreter mortal decrefs53,044,64011.6%53,103,34011.6%0.1%
Mortal decrefs360,039,10478.9%360,059,63778.9%0.0%
Allocations to 4 kbytes2,457,6001.6%2,457,6401.6%0.0%
Immortal decrefs28,263,2906.2%28,263,3696.2%0.0%
Immortal increfs152,802,19434.9%152,802,35534.9%0.0%
Mortal increfs224,892,68051.3%224,892,87151.3%0.0%
Allocations141,332,70092.2%141,332,78092.2%0.0%
Allocations to 512 bytes138,875,10090.6%138,875,12090.6%0.0%
Frees145,428,681145,428,6830.0%
Allocations from freelist11,878,5607.8%11,878,5607.8%0.0%
Frees to freelist11,878,50011,878,5000.0%
Allocations over 4 kbytes00.0%200.0%20 / 0 !!
Inline values00
Materialize dict (on request)00
Materialize dict (new key)00
Materialize dict (too big)00
Materialize dict (str subclass)00
Method cache dunder hits00
Method cache dunder misses00
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-logging-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-logging-vs-base.md new file mode 100644 index 00000000..d5297d43 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-logging-vs-base.md @@ -0,0 +1,2721 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
FOR_ITER_RANGE10,813,6201,080-100.0%
JUMP_BACKWARD27,197,4403,520-100.0%
CONTAINS_OP3,278,0003,000-99.9%
LOAD_ATTR_SLOT16,383,8801,645,120-90.0%
CALL_PY_GENERAL108,133,80011,963,520-88.9%
BINARY_SUBSCR_DICT111,411,14013,603,760-87.8%
NOP124,518,64020,157,660-83.8%
LOAD_ATTR_METHOD_WITH_VALUES271,973,06051,779,700-81.0%
TO_BOOL_BOOL289,995,98056,214,780-80.6%
LOAD_ATTR32,787,3646,410,468-80.4%
RETURN_CONST131,072,24028,838,740-78.0%
RESUME_CHECK326,041,40072,263,340-77.8%
LOAD_ATTR_INSTANCE_VALUE312,998,60670,659,930-77.4%
POP_JUMP_IF_FALSE350,621,35883,252,714-76.3%
LOAD_FAST1,168,188,777287,034,048-75.4%
POP_TOP150,733,94037,037,200-75.4%
COMPARE_OP_STR13,107,1203,277,320-75.0%
POP_JUMP_IF_NOT_NONE13,107,2003,277,400-75.0%
CALL_PY_EXACT_ARGS206,437,52054,562,840-73.6%
LOAD_GLOBAL_MODULE249,036,86069,147,500-72.2%
RETURN_VALUE194,970,56055,710,900-71.4%
COPY22,937,7206,557,120-71.4%
COMPARE_OP_INT31,129,5209,015,440-71.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS16,383,9604,915,760-70.0%
POP_JUMP_IF_TRUE26,214,4008,195,720-68.7%
BUILD_TUPLE9,830,4003,116,840-68.3%
STORE_FAST159,909,10059,815,160-62.6%
LOAD_ATTR_MODULE78,643,10029,492,900-62.5%
FOR_ITER_LIST13,107,1204,915,720-62.5%
PUSH_NULL39,322,80016,222,720-58.7%
LOAD_CONST144,182,95960,636,474-57.9%
TO_BOOL_NONE29,522,84013,109,600-55.6%
BUILD_MAP3,276,8001,475,320-55.0%
DICT_MERGE3,276,8001,475,320-55.0%
LOAD_FAST_LOAD_FAST90,112,24044,811,620-50.3%
TO_BOOL_ALWAYS_TRUE13,137,4806,551,360-50.1%
STORE_ATTR_INSTANCE_VALUE72,088,72036,043,920-50.0%
BINARY_OP_SUBTRACT_INT6,553,5203,276,720-50.0%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES6,553,5203,276,720-50.0%
BINARY_SUBSCR_TUPLE_INT4,915,1402,457,540-50.0%
BINARY_OP_ADD_UNICODE3,276,7601,638,360-50.0%
CALL_METHOD_DESCRIPTOR_O3,276,7601,638,360-50.0%
CALL_STR_13,276,7601,638,360-50.0%
COMPARE_OP_FLOAT3,276,7601,638,360-50.0%
LOAD_ATTR_PROPERTY3,276,7601,638,360-50.0%
TO_BOOL_STR3,276,7601,638,360-50.0%
UNPACK_SEQUENCE_TUPLE3,276,7601,638,360-50.0%
CALL_ISINSTANCE14,745,4607,372,660-50.0%
BINARY_OP_ADD_INT13,107,0806,553,480-50.0%
LOAD_ATTR_METHOD_NO_DICT22,937,48011,468,680-50.0%
BINARY_SLICE13,107,2006,553,600-50.0%
POP_JUMP_IF_NONE9,830,4004,915,200-50.0%
STORE_FAST_STORE_FAST6,553,6003,276,800-50.0%
CALL_BUILTIN_FAST11,468,8405,734,440-50.0%
CALL_METHOD_DESCRIPTOR_FAST22,937,72011,468,920-50.0%
JUMP_FORWARD9,830,4604,915,260-50.0%
CALL_NON_PY_GENERAL29,491,42014,745,820-50.0%
LOAD_SPECIAL13,107,3206,553,720-50.0%
SWAP13,107,3806,553,780-50.0%
LOAD_GLOBAL_BUILTIN32,771,36616,385,930-50.0%
GET_ITER9,830,6404,915,440-50.0%
CALL_METHOD_DESCRIPTOR_NOARGS3,339,9401,670,020-50.0%
INTERPRETER_EXIT8,192,4604,096,460-50.0%
LOAD_ATTR_METHOD_LAZY_DICT6,554,0603,277,260-50.0%
CALL_LEN1,638,560819,360-50.0%
CALL_FUNCTION_EX3,277,2801,638,880-50.0%
BINARY_OP21,310,97810,657,290-50.0%
TO_BOOL6,558,8003,281,200-50.0%
CALL_BUILTIN_CLASS3,2461,810-44.2%
COMPARE_OP4,2582,770-34.9%
LOAD_GLOBAL4,3044,288-0.4%
CALL6,8846,868-0.2%
STORE_ATTR1,7611,760-0.1%
RESUME1,4001,4000.0%
LOAD_DEREF7207200.0%
FOR_ITER2802800.0%
BINARY_SUBSCR2402400.0%
BUILD_LIST2402400.0%
CALL_INTRINSIC_12402400.0%
COPY_FREE_VARS2402400.0%
LIST_EXTEND2402400.0%
BINARY_OP_SUBTRACT_FLOAT1801800.0%
IS_OP1801800.0%
BINARY_OP_MULTIPLY_INT1201200.0%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS1201200.0%
UNPACK_SEQUENCE80800.0%
CHECK_EXC_MATCH60600.0%
POP_EXCEPT60600.0%
PUSH_EXC_INFO60600.0%
STORE_SUBSCR60600.0%
LOAD_FAST_CHECK60600.0%
STORE_FAST_LOAD_FAST60600.0%
ENTER_EXECUTOR10,324,360
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
22,937,66051.8%11,468,86051.8%-50.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
21,302,63848.1%10,651,59448.1%-50.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure7,96095.4%5,31693.3%-33.2%
Success3804.6%3806.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
remainder3,00037.7%2,00037.6%-33.3%
true divide different types2,40030.2%1,60030.1%-33.3%
add different types1,20015.1%80015.0%-33.3%
floor divide1,36017.1%91617.2%-32.6%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
13,107,200100.0%6,553,600100.0%-50.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
116,326,280100.0%16,061,300100.0%-86.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1200.0%1200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success120100.0%120100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
280,169,12698.8%88,152,81098.1%-68.5%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
3,339,7601.2%1,669,8401.9%-50.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3,4720.0%3,4640.0%-0.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success66,412100.0%34,884100.0%-47.5%
Failure00.0%00.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
init not simple4040 / 0 !!4040 / 0 !!0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
47,513,400100.0%13,931,120100.0%-70.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3,6580.0%2,2140.0%-39.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure16026.7%11620.9%-27.5%
Success44073.3%44079.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
big int160100.0%116100.0%-27.5%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3,276,800100.0%2,80093.3%-99.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,200100.0%200100.0%-83.3%
Success00.0%00.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
str1,200100.0%200100.0%-83.3%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
23,920,740100.0%4,916,800100.0%-79.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1400.0%1400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success140100.0%140100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
32,772,6524.4%6,402,6043.6%-80.5%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
716,012,50695.2%171,584,71095.5%-76.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
3,307,9600.4%1,653,9600.9%-50.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure10,40013.5%3,5609.1%-65.8%
Success66,71286.5%35,50490.9%-46.8%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
overriding descriptor9,20088.5%2,80078.7%-69.6%
method1,20011.5%76021.3%-36.7%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
281,806,346100.0%85,531,550100.0%-69.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,1720.0%2,1640.0%-0.4%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1,8800.0%1,8800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success2,212100.0%2,204100.0%-0.4%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
72,088,720100.0%36,043,920100.0%-50.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
8810.0%8800.0%-0.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success880100.0%880100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
60100.0%60100.0%0.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
3,307,9601.0%2,1200.0%-99.9%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
321,141,22097.0%70,960,62095.6%-77.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6,555,0602.0%3,278,2604.4%-50.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success63,74096.4%1,38046.3%-97.8%
Failure2,4003.6%1,60053.7%-33.3%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple2,400100.0%1,600100.0%-33.3%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
3,276,760100.0%1,638,360100.0%-50.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.0%400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
2,360,343,25845.6%605,814,05043.2%-74.3%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
2,733,206,47452.8%764,811,93654.6%-72.0%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
9,957,5600.2%3,327,8400.2%-66.6%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
77,060,2091.5%26,921,9041.9%-65.1%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
CONTAINS_OP3,276,8004.3%2,8000.0%-99.9%
LOAD_ATTR32,772,65242.5%6,402,60423.8%-80.5%
BINARY_SLICE13,107,20017.0%6,553,60024.4%-50.0%
BINARY_OP21,302,63827.7%10,651,59439.6%-50.0%
TO_BOOL6,555,0608.5%3,278,26012.2%-50.0%
COMPARE_OP3,6580.0%2,2140.0%-39.5%
LOAD_GLOBAL2,1720.0%2,1640.0%-0.4%
CALL3,4720.0%3,4640.0%-0.2%
STORE_ATTR8810.0%8800.0%-0.1%
FOR_ITER1400.0%1400.0%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
TO_BOOL_NONE1,654,36016.6%2,1200.1%-99.9%
CALL_METHOD_DESCRIPTOR_NOARGS3,339,76033.5%1,669,84050.2%-50.0%
LOAD_ATTR_INSTANCE_VALUE3,307,96033.2%1,653,96049.7%-50.0%
TO_BOOL_ALWAYS_TRUE1,653,60016.6%
LOAD_GLOBAL_BUILTIN1,7000.0%1,7000.1%0.0%
LOAD_GLOBAL_MODULE1800.0%1800.0%0.0%
CACHE00.0%00.0%
CHECK_EXC_MATCH00.0%00.0%
GET_ITER00.0%00.0%
INTERPRETER_EXIT00.0%
RESUME400.0%
RESUME_CHECK400.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to Python functions inlined317,850,34097.5%158,925,54097.5%-50.0%
Frames pushed326,042,800100.0%163,022,000100.0%-50.0%
Frame objects created9,830,6203.0%4,915,4203.0%-50.0%
Calls to PyEval_EvalDefault8,192,4602.5%4,096,4602.5%-50.0%
Calls via PyEval_EvalFrame (total)8,192,4602.5%4,096,4602.5%-50.0%
Calls via PyEval_EvalFrame (vector)8,192,4602.5%4,096,4602.5%-50.0%
Calls via PyEval_EvalFrame (function vectorcall)8,192,4602.5%4,096,4602.5%-50.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)4800.0%4800.0%0.0%
Calls via PyEval_EvalFrame (api)1000.0%1000.0%0.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Interpreter immortal increfs927,337,48625.9%369,973,55021.6%-60.1%
Allocations to 512 bytes91,816,14236.1%45,901,95836.1%-50.0%
Allocations91,816,30236.1%45,902,35836.1%-50.0%
Frees91,818,34445,907,681-50.0%
Inline values3,276,8001,638,400-50.0%
Materialize dict (on request)3,276,800100.0%1,638,400100.0%-50.0%
Frees to freelist162,204,08081,102,260-50.0%
Immortal increfs342,472,5139.5%171,237,30310.0%-50.0%
Immortal decrefs234,280,8476.4%117,141,3336.3%-50.0%
Allocations from freelist162,202,94063.9%81,102,36063.9%-50.0%
Method cache dunder hits29,492,78614,746,781-50.0%
Method cache hits45,922,61622,963,027-50.0%
Mortal increfs181,862,3765.1%90,952,0295.3%-50.0%
Interpreter mortal decrefs2,379,042,67865.2%1,201,794,46065.0%-49.5%
Interpreter mortal increfs2,134,884,34259.5%1,081,356,61263.1%-49.3%
Mortal decrefs185,180,1755.1%94,246,8495.1%-49.1%
Interpreter immortal decrefs847,978,20823.3%435,151,35223.5%-48.7%
Allocations over 4 kbytes1600.0%1800.0%12.5%
Method cache collisions2,6212,541-3.1%
Method cache misses3,1693,101-2.1%
Method cache dunder misses6946990.7%
Allocations to 4 kbytes00.0%2200.0%220 / 0 !!
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1203,900470,660000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files60600.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-mako-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-mako-vs-base.md new file mode 100644 index 00000000..c1afd617 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-mako-vs-base.md @@ -0,0 +1,3097 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD58,115,5202,620-100.0%
FOR_ITER_RANGE58,116,2607,260-100.0%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS144,134,300143,700-99.9%
LOAD_ATTR_METHOD_NO_DICT144,376,640321,380-99.8%
CALL_BUILTIN_O174,325,220399,560-99.8%
LOAD_CONST405,431,380986,560-99.8%
PUSH_NULL203,352,920502,900-99.8%
CALL_STR_157,868,480147,400-99.7%
STORE_FAST202,709,800611,380-99.7%
POP_TOP174,506,080586,280-99.7%
LOAD_ATTR_MODULE29,021,42098,460-99.7%
LOAD_FAST408,121,2002,956,280-99.3%
FOR_ITER_LIST386,9603,280-99.2%
LOAD_GLOBAL_MODULE29,612,360498,900-98.3%
RETURN_VALUE29,492,620505,200-98.3%
LOAD_GLOBAL_BUILTIN58,856,7201,009,400-98.3%
CALL_PY_EXACT_ARGS29,437,900512,840-98.3%
GET_ITER389,5608,700-97.8%
RESUME_CHECK29,659,780672,040-97.7%
CALL_TYPE_164,0201,600-97.5%
LIST_APPEND32040-87.5%
BINARY_SUBSCR_DICT71,5809,160-87.2%
MAKE_FUNCTION71,6809,260-87.1%
EXTENDED_ARG1,300400-69.2%
CALL_NON_PY_GENERAL229,080101,380-55.7%
BINARY_OP_SUBTRACT_INT540260-51.9%
CALL_PY_GENERAL130,64068,220-47.8%
BUILD_TUPLE142,54079,980-43.9%
BINARY_SUBSCR_STR_INT400240-40.0%
BINARY_SUBSCR_LIST_INT160100-37.5%
CALL_BOUND_METHOD_EXACT_ARGS380240-36.8%
LOAD_FAST_LOAD_FAST533,580345,680-35.2%
COMPARE_OP_STR840560-33.3%
TO_BOOL207,920144,440-30.5%
NOP223,900160,780-28.2%
POP_JUMP_IF_FALSE555,960429,920-22.7%
IS_OP920720-21.7%
TO_BOOL_LIST300240-20.0%
STORE_SUBSCR_DICT10,1808,220-19.3%
STORE_SUBSCR740600-18.9%
CALL_BUILTIN_FAST_WITH_KEYWORDS220180-18.2%
BINARY_SLICE1,6401,360-17.1%
CALL_ISINSTANCE389,200326,700-16.1%
TO_BOOL_BOOL408,620346,080-15.3%
FOR_ITER420360-14.3%
BUILD_MAP7,7206,740-12.7%
LOAD_ATTR_INSTANCE_VALUE611,600536,920-12.2%
CALL_KW_NON_PY8,8407,860-11.1%
LOAD_ATTR_CLASS10,2209,240-9.6%
UNPACK_SEQUENCE_TWO_TUPLE1,7801,620-9.0%
CALL_METHOD_DESCRIPTOR_NOARGS11,50010,520-8.5%
STORE_FAST_STORE_FAST1,9001,740-8.4%
LOAD_ATTR_WITH_HINT38,04036,080-5.2%
BINARY_OP_ADD_INT1,6601,580-4.8%
CALL_BUILTIN_FAST20,38019,400-4.8%
STORE_ATTR_INSTANCE_VALUE256,360248,220-3.2%
BINARY_SUBSCR_TUPLE_INT1,3601,320-2.9%
BUILD_LIST4,2204,140-1.9%
POP_JUMP_IF_NOT_NONE9,2609,100-1.7%
BINARY_OP82,26081,260-1.2%
COPY146,160145,180-0.7%
POP_JUMP_IF_NONE148,720147,740-0.7%
COMPARE_OP_INT64,56064,240-0.5%
LOAD_ATTR_METHOD_WITH_VALUES437,120435,020-0.5%
CALL_BUILTIN_CLASS66,98066,680-0.4%
POP_JUMP_IF_TRUE284,740283,760-0.3%
JUMP_FORWARD74,98074,800-0.2%
TO_BOOL_NONE79,58079,420-0.2%
CALL_LEN64,64064,520-0.2%
CALL_METHOD_DESCRIPTOR_FAST169,340169,140-0.1%
CALL_LIST_APPEND76,98076,900-0.1%
CONTAINS_OP69,76069,700-0.1%
RETURN_CONST168,480168,360-0.1%
LOAD_ATTR37,40037,380-0.1%
INTERPRETER_EXIT83,54083,5400.0%
BINARY_SUBSCR78,74078,7400.0%
CALL_METHOD_DESCRIPTOR_O65,32065,3200.0%
LOAD_DEREF19,36019,3600.0%
STORE_ATTR12,78012,7800.0%
CALL9,2209,2200.0%
COPY_FREE_VARS7,7607,7600.0%
SET_FUNCTION_ATTRIBUTE7,6807,6800.0%
CONTAINS_OP_DICT5,1005,1000.0%
LOAD_GLOBAL4,4404,4400.0%
CALL_FUNCTION_EX3,9203,9200.0%
DICT_MERGE3,8403,8400.0%
TO_BOOL_INT3,0003,0000.0%
BINARY_SUBSCR_GETITEM2,5802,5800.0%
CALL_INTRINSIC_12,5602,5600.0%
LIST_EXTEND2,5602,5600.0%
MAKE_CELL2,5602,5600.0%
TO_BOOL_STR1,4201,4200.0%
IMPORT_FROM1,2801,2800.0%
IMPORT_NAME1,2801,2800.0%
STORE_DEREF1,2801,2800.0%
RESUME1,2601,2600.0%
CALL_KW_PY1,2601,2600.0%
CONTAINS_OP_SET3403400.0%
CALL_KW2802800.0%
COMPARE_OP2002000.0%
SWAP1201200.0%
UNPACK_SEQUENCE_TUPLE1201200.0%
EXIT_INIT_CHECK80800.0%
STORE_FAST_LOAD_FAST80800.0%
CALL_ALLOC_AND_ENTER_INIT80800.0%
FOR_ITER_TUPLE80800.0%
LOAD_ATTR_PROPERTY80800.0%
UNARY_INVERT60600.0%
UNARY_NOT60600.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
STORE_SUBSCR_LIST_INT60600.0%
CHECK_EXC_MATCH40400.0%
POP_EXCEPT40400.0%
PUSH_EXC_INFO40400.0%
UNARY_NEGATIVE40400.0%
LOAD_FAST_AND_CLEAR40400.0%
UNPACK_SEQUENCE40400.0%
BINARY_OP_MULTIPLY_INT40400.0%
BINARY_OP_INPLACE_ADD_UNICODE20200.0%
CALL_TUPLE_120200.0%
ENTER_EXECUTOR14,120
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,3202.7%1,9602.4%-15.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
81,32096.1%80,34096.5%-1.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure90095.7%88095.7%-2.2%
Success404.3%404.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
remainder50055.6%48054.5%-4.0%
add other20022.2%20022.7%0.0%
and int20022.2%20022.7%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,640100.0%1,360100.0%-17.1%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
76,04049.1%13,36014.5%-82.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
78,32050.6%78,32085.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
400.0%400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success12028.6%12028.6%0.0%
Failure30071.4%30071.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
out of range20066.7%20066.7%0.0%
buffer int10033.3%10033.3%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
406,617,080100.0%1,926,78095.7%-99.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4,6400.0%4,6400.2%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
78,2600.0%78,2603.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success6,180100.0%6,180100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
14050.0%14050.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
65,38099.7%64,78099.7%-0.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1400.2%1400.2%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
200.0%200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success60100.0%60100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
69,36092.2%69,30092.2%-0.1%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
5,4407.2%5,4407.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success6015.0%6015.0%0.0%
Failure34085.0%34085.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other20058.8%20058.8%0.0%
tuple14041.2%14041.2%0.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
58,503,300100.0%10,62096.7%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2600.0%2202.0%-15.4%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure2012.5%00.0%-100.0%
Success14087.5%140100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
seq iter20100.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
174,471,900100.0%1,413,96095.9%-99.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
32,2800.0%32,2602.2%-0.1%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
23,2200.0%23,2201.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success4,04073.7%4,04073.7%0.0%
Failure1,44026.3%1,44026.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
module attr not found46031.9%46031.9%0.0%
overriding descriptor40027.8%40027.8%0.0%
non object slot40027.8%40027.8%0.0%
mutable class1006.9%1006.9%0.0%
method805.6%805.6%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
88,468,920100.0%1,508,14099.7%-98.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,2400.0%2,2400.1%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1600.0%1600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success2,200100.0%2,200100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
256,36095.3%248,22095.1%-3.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
11,9804.5%11,9804.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success44055.0%44055.0%0.0%
Failure36045.0%36045.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
class attr simple360100.0%360100.0%0.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5605.1%4004.5%-28.6%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
10,24093.3%8,28093.2%-19.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure4022.2%6030.0%50.0%
Success14077.8%14070.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
dict subclass no override40100.0%4066.7%0.0%
bytearray int2033.3%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
206,54029.5%143,14024.9%-30.7%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
492,92070.3%430,16074.9%-12.7%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure94068.1%86066.2%-8.5%
Success44031.9%44033.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple28029.8%22025.6%-21.4%
dict16017.0%14016.3%-12.5%
bytes40042.6%40046.5%0.0%
set10010.6%10011.6%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,90097.9%1,74097.8%-8.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
201.0%201.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
1,484,634,94066.2%8,181,86053.8%-99.4%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
759,001,02033.8%6,483,96042.6%-99.1%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
505,8400.0%440,8002.9%-12.9%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
101,7000.0%101,7000.7%0.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
TO_BOOL206,54042.2%143,14033.7%-30.7%
STORE_SUBSCR5600.1%4000.1%-28.6%
BINARY_SLICE1,6400.3%1,3600.3%-17.1%
BINARY_OP81,32016.6%80,34018.9%-1.2%
CONTAINS_OP69,36014.2%69,30016.3%-0.1%
LOAD_ATTR32,2806.6%32,2607.6%-0.1%
BINARY_SUBSCR78,32016.0%78,32018.4%0.0%
STORE_ATTR11,9802.4%11,9802.8%0.0%
CALL4,6400.9%4,6401.1%0.0%
LOAD_GLOBAL2,2400.5%2,2400.5%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
CALL_METHOD_DESCRIPTOR_FAST78,24076.9%78,24076.9%0.0%
LOAD_ATTR_METHOD_WITH_VALUES10,36010.2%10,36010.2%0.0%
LOAD_ATTR_INSTANCE_VALUE10,30010.1%10,30010.1%0.0%
LOAD_ATTR_MODULE2,5602.5%2,5602.5%0.0%
LOAD_GLOBAL_BUILTIN1600.2%1600.2%0.0%
BINARY_SUBSCR_LIST_INT200.0%200.0%0.0%
BINARY_SUBSCR_STR_INT200.0%200.0%0.0%
CALL_BUILTIN_FAST200.0%200.0%0.0%
COMPARE_OP_STR200.0%200.0%0.0%
CACHE00.0%00.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault83,5600.3%83,5600.3%0.0%
Calls to Python functions inlined29,577,48099.7%29,577,48099.7%0.0%
Calls via PyEval_EvalFrame (total)83,5600.3%83,5600.3%0.0%
Calls via PyEval_EvalFrame (vector)83,5600.3%83,5600.3%0.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)83,5600.3%83,5600.3%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)1000.0%1000.0%0.0%
Calls via PyEval_EvalFrame (function ex)2,6400.0%2,6400.0%0.0%
Calls via PyEval_EvalFrame (api)200.0%200.0%0.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created800.0%800.0%0.0%
Frames pushed29,661,120100.0%29,661,120100.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache dunder misses7082,059190.8%
Interpreter immortal increfs262,310,64015.2%60,466,4404.0%-76.9%
Method cache collisions12,69113,9279.7%
Interpreter mortal increfs846,271,98049.1%818,502,54054.8%-3.3%
Interpreter mortal decrefs1,049,318,62055.3%1,021,546,58054.6%-2.6%
Allocations over 4 kbytes2,5800.0%2,6000.0%0.8%
Method cache misses12,35812,289-0.6%
Method cache dunder hits374,432373,081-0.4%
Frees to freelist567,320567,9000.1%
Allocations from freelist568,4000.5%568,9800.5%0.1%
Method cache hits70,04270,1110.1%
Immortal decrefs4,382,5190.2%4,384,0210.2%0.0%
Allocations to 4 kbytes2,726,4202.3%2,726,6402.3%0.0%
Mortal decrefs409,153,10121.5%409,168,53521.9%0.0%
Interpreter immortal decrefs436,280,04023.0%436,294,54023.3%0.0%
Frees119,162,364119,165,7710.0%
Immortal increfs118,898,5556.9%118,900,7328.0%0.0%
Mortal increfs495,531,54128.8%495,540,33433.2%0.0%
Allocations119,146,46099.5%119,146,74099.5%0.0%
Allocations to 512 bytes116,417,46097.2%116,417,50097.2%0.0%
Inline values18,02018,0200.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-mdp-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-mdp-vs-base.md new file mode 100644 index 00000000..02230a64 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-mdp-vs-base.md @@ -0,0 +1,3020 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD425,231,52010,240-100.0%
CONTAINS_OP_SET45,007,54012,440-100.0%
CALL_METHOD_DESCRIPTOR_FAST2,179,4001,020-100.0%
SET_FUNCTION_ATTRIBUTE62,353,76034,920-99.9%
NOP62,739,52035,700-99.9%
COMPARE_OP_FLOAT31,185,86017,900-99.9%
BINARY_SUBSCR_DICT63,032,120244,320-99.6%
MAKE_FUNCTION63,032,400328,360-99.5%
RETURN_GENERATOR62,832,560513,800-99.2%
LOAD_ATTR_INSTANCE_VALUE63,357,060577,480-99.1%
POP_JUMP_IF_TRUE33,170,240321,080-99.0%
LOAD_ATTR_METHOD_WITH_VALUES63,496,820620,360-99.0%
STORE_SUBSCR91,427,3801,140,820-98.8%
CALL_LIST_APPEND771,64011,020-98.6%
CALL_BUILTIN_FAST_WITH_KEYWORDS71,355,1401,054,520-98.5%
FOR_ITER_RANGE23,417,720504,400-97.8%
LIST_APPEND22,832,560504,680-97.8%
STORE_FAST_LOAD_FAST24,625,680724,840-97.1%
GET_ITER65,797,3603,096,080-95.3%
COPY58,445,6802,844,360-95.1%
BUILD_TUPLE74,571,3603,659,700-95.1%
BINARY_OP_SUBTRACT_FLOAT9,060480-94.7%
SWAP61,701,1204,933,500-92.0%
BINARY_OP_ADD_FLOAT105,8009,280-91.2%
CALL_KW_PY4,354,380404,180-90.7%
TO_BOOL4,356,100404,920-90.7%
TO_BOOL_LIST2,472,120293,660-88.1%
BINARY_SUBSCR_TUPLE_INT44,235,2205,942,880-86.6%
FOR_ITER_LIST451,408,68062,713,000-86.1%
CALL_LEN4,939,800697,040-85.9%
FOR_ITER11,286,4601,603,620-85.8%
BINARY_OP_MULTIPLY_FLOAT281,242,20041,716,800-85.2%
UNPACK_SEQUENCE_TWO_TUPLE293,569,02043,597,740-85.1%
BINARY_SUBSCR415,213,78064,358,420-84.5%
FOR_ITER_TUPLE2,741,100444,460-83.8%
MAP_ADD3,091,600535,520-82.7%
COMPARE_OP1,609,580294,900-81.7%
LOAD_DEREF500,041,28095,087,320-81.0%
JUMP_FORWARD13,320,6402,776,200-79.2%
CALL_PY_EXACT_ARGS164,962,02035,312,340-78.6%
STORE_FAST840,424,800254,853,980-69.7%
LOAD_ATTR_METHOD_NO_DICT11,682,6803,649,580-68.8%
LOAD_CONST259,371,20084,481,960-67.4%
UNARY_NEGATIVE5,776,0001,900,520-67.1%
LOAD_FAST1,717,852,800622,072,380-63.8%
CALL_METHOD_DESCRIPTOR_O877,380395,660-54.9%
CALL_BUILTIN_CLASS10,733,5205,306,040-50.6%
COPY_FREE_VARS141,718,96071,499,800-49.5%
POP_JUMP_IF_FALSE196,768,640104,740,000-46.8%
COMPARE_OP_STR1,222,260682,920-44.1%
LOAD_GLOBAL_BUILTIN172,872,360100,801,820-41.7%
COMPARE_OP_INT99,779,88059,005,300-40.9%
BINARY_OP133,306,96081,698,860-38.7%
RETURN_VALUE193,172,620119,003,260-38.4%
LOAD_ATTR65,836,34041,392,980-37.1%
UNPACK_SEQUENCE_TUPLE1,013,360756,820-25.3%
LOAD_FAST_LOAD_FAST381,972,720295,197,520-22.7%
BINARY_OP_MULTIPLY_INT120,190,34097,455,160-18.9%
STORE_FAST_STORE_FAST75,240,56064,538,140-14.2%
RESUME_CHECK580,906,520505,290,080-13.0%
BINARY_OP_ADD_INT35,599,56031,025,920-12.8%
CALL_BOUND_METHOD_EXACT_ARGS35,344,00031,008,600-12.3%
PUSH_NULL100,104,32087,868,520-12.2%
BUILD_MAP720,800646,080-10.4%
CALL_NON_PY_GENERAL47,600,26043,412,420-8.8%
BUILD_LIST1,171,5201,090,060-7.0%
LOAD_FAST_AND_CLEAR1,655,2801,573,820-4.9%
LOAD_GLOBAL_MODULE172,251,160167,475,080-2.8%
TO_BOOL_BOOL34,553,04034,222,160-1.0%
POP_TOP388,963,560388,577,620-0.1%
EXTENDED_ARG9,457,3609,448,860-0.1%
INTERPRETER_EXIT435,891,180435,891,1800.0%
YIELD_VALUE324,495,840324,495,8400.0%
LOAD_ATTR_SLOT130,016,240130,016,2400.0%
STORE_ATTR_SLOT80,104,68080,104,6800.0%
RETURN_CONST63,239,12063,239,1200.0%
CALL_BUILTIN_FAST58,829,24058,829,2400.0%
LOAD_ATTR_MODULE58,243,86058,243,8600.0%
LOAD_SUPER_ATTR_METHOD40,052,36040,052,3600.0%
CALL_ISINSTANCE33,089,52033,089,5200.0%
IS_OP10,113,04010,113,0400.0%
CALL_TYPE_110,112,98010,112,9800.0%
POP_JUMP_IF_NOT_NONE9,448,4809,448,4800.0%
LOAD_ATTR_PROPERTY3,246,8003,246,8000.0%
CALL_METHOD_DESCRIPTOR_NOARGS1,615,5601,615,5600.0%
CHECK_EXC_MATCH385,680385,6800.0%
POP_EXCEPT385,680385,6800.0%
PUSH_EXC_INFO385,680385,6800.0%
STORE_SUBSCR_DICT385,660385,6600.0%
CALL_FUNCTION_EX292,960292,9600.0%
LOAD_FAST_CHECK292,800292,8000.0%
BINARY_OP_SUBTRACT_INT292,700292,7000.0%
BINARY_SUBSCR_LIST_INT292,700292,7000.0%
CALL_KW_NON_PY292,700292,7000.0%
CALL5,0605,0600.0%
LOAD_GLOBAL4,3404,3400.0%
RESUME1,0001,0000.0%
UNPACK_SEQUENCE6806800.0%
STORE_ATTR4804800.0%
STORE_ATTR_INSTANCE_VALUE3603600.0%
TO_BOOL_INT3003000.0%
MAKE_CELL1601600.0%
STORE_DEREF1601600.0%
CONTAINS_OP1201200.0%
CALL_INTRINSIC_180800.0%
CALL_KW80800.0%
LIST_EXTEND80800.0%
LOAD_SUPER_ATTR80800.0%
EXIT_INIT_CHECK60600.0%
CALL_ALLOC_AND_ENTER_INIT60600.0%
CALL_BUILTIN_O60600.0%
ENTER_EXECUTOR327,691,200
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
437,439,66076.6%170,500,34067.6%-61.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
133,268,42023.3%81,672,94032.4%-38.7%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure37,72097.9%25,10096.8%-33.5%
Success8202.1%8203.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
add other7,78020.6%1,0204.1%-86.9%
multiply other4001.1%2801.1%-30.0%
true divide different types5801.5%4201.7%-27.6%
floor divide27,56073.1%22,06087.9%-20.0%
multiply different types5601.5%4801.9%-14.3%
true divide other5801.5%5802.3%0.0%
subtract different types2600.7%2601.0%0.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
107,560,04020.6%6,479,9009.1%-94.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
415,108,76079.4%64,339,36090.8%-84.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure104,66099.7%18,70098.1%-82.1%
Success3600.3%3601.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other97,86093.5%17,48093.5%-82.1%
buffer int6,8006.5%1,2206.5%-82.1%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
427,573,04099.4%205,860,98098.8%-51.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,5200.0%2,5200.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
2,581,2800.6%2,581,2801.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success51,200100.0%51,200100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4050.0%4050.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,608,1601.2%293,8000.5%-81.7%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
132,188,00098.8%59,706,12099.5%-54.8%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure78054.9%46041.8%-41.0%
Success64045.1%64058.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
different types780100.0%460100.0%-41.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
45,007,540100.0%12,44099.0%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
600.0%600.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success60100.0%60100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
477,092,84097.6%63,576,12097.4%-86.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
11,282,0802.3%1,601,6002.5%-85.8%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
474,6600.1%85,7400.1%-81.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success9,18068.9%1,84050.8%-80.0%
Failure4,14031.1%1,78049.2%-57.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
dict items3,68088.9%1,46082.0%-60.3%
zip46011.1%32018.0%-30.4%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
329,965,18083.3%196,276,04082.6%-40.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
65,808,16016.6%41,370,80017.4%-37.1%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
78,2800.0%78,2800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure26,58089.7%20,58087.1%-22.6%
Success3,06010.3%3,06012.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
method1,2804.8%3001.5%-76.6%
overriding descriptor15,42058.0%11,38055.3%-26.2%
class method obj8,62032.4%8,62041.9%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
345,123,520100.0%268,276,900100.0%-22.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,1600.0%2,1600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success2,180100.0%2,180100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_SUPER_ATTR + +
+ specialization stats for LOAD_SUPER_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.0%400.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
40,052,360100.0%40,052,360100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2400.0%2400.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
80,105,040100.0%80,105,040100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success240100.0%240100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
91,403,14099.6%1,138,94074.6%-98.8%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
385,6600.4%385,66025.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure24,22099.9%1,86098.9%-92.3%
Success200.1%201.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
dict subclass no override24,220100.0%1,860100.0%-92.3%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4,354,62010.5%404,4201.2%-90.7%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
37,025,46089.5%34,516,12098.8%-6.8%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,26085.1%28056.0%-77.8%
Success22014.9%22044.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
dict1,260100.0%280100.0%-77.8%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
294,582,380100.0%44,354,560100.0%-84.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3400.0%3400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success340100.0%340100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
723,047,4406.7%190,905,3603.6%-73.6%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
3,351,910,28031.1%1,688,493,04032.0%-49.6%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
6,693,090,42062.1%3,395,522,02064.3%-49.3%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
3,134,5200.0%2,745,6200.1%-12.4%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
STORE_SUBSCR91,403,14012.6%1,138,9400.6%-98.8%
TO_BOOL4,354,6200.6%404,4200.2%-90.7%
FOR_ITER11,282,0801.6%1,601,6000.8%-85.8%
BINARY_SUBSCR415,108,76057.4%64,339,36033.7%-84.5%
COMPARE_OP1,608,1600.2%293,8000.2%-81.7%
BINARY_OP133,268,42018.4%81,672,94042.8%-38.7%
LOAD_ATTR65,808,1609.1%41,370,80021.7%-37.1%
CALL2,5200.0%2,5200.0%0.0%
LOAD_GLOBAL2,1600.0%2,1600.0%0.0%
UNPACK_SEQUENCE3400.0%3400.0%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
FOR_ITER_TUPLE237,2207.6%42,4001.5%-82.1%
FOR_ITER_LIST237,4407.6%43,3401.6%-81.7%
RESUME3000.0%3200.0%6.7%
RESUME_CHECK3000.0%3200.0%6.7%
CALL_PY_EXACT_ARGS1,686,38053.8%1,686,38061.4%0.0%
CALL_METHOD_DESCRIPTOR_NOARGS894,90028.5%894,90032.6%0.0%
LOAD_ATTR_METHOD_NO_DICT50,7201.6%50,7201.8%0.0%
LOAD_ATTR_PROPERTY27,5600.9%27,5601.0%0.0%
CACHE00.0%00.0%
CHECK_EXC_MATCH00.0%00.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault435,891,18067.7%435,891,18067.7%0.0%
Calls to Python functions inlined207,848,90032.3%207,848,90032.3%0.0%
Calls via PyEval_EvalFrame (total)435,891,18067.7%435,891,18067.7%0.0%
Calls via PyEval_EvalFrame (vector)48,562,7807.5%48,562,7807.5%0.0%
Calls via PyEval_EvalFrame (generator)387,328,40060.2%387,328,40060.2%0.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)48,562,7807.5%48,562,7807.5%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)34,111,6805.3%34,111,6805.3%0.0%
Calls via PyEval_EvalFrame (function ex)1600.0%1600.0%0.0%
Calls via PyEval_EvalFrame (api)2,223,4000.3%2,223,4000.3%0.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created385,6800.1%385,6800.1%0.0%
Frames pushed256,411,74039.8%256,411,74039.8%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache dunder misses6054,143,699684,808.9%
Method cache collisions30,3324,158,80313,610.9%
Method cache misses30,22815,618-48.3%
Interpreter immortal decrefs1,419,050,10012.9%1,746,743,24014.9%23.1%
Allocations over 4 kbytes1,9200.0%2,2600.0%17.7%
Interpreter mortal increfs5,018,406,32055.0%5,449,182,94057.7%8.6%
Interpreter immortal increfs1,287,345,06014.1%1,178,698,86012.5%-8.4%
Interpreter mortal decrefs5,393,023,64049.2%5,760,257,28049.1%6.8%
Method cache dunder hits71,293,67567,064,621-5.9%
Mortal decrefs2,585,452,56723.6%2,650,948,60922.6%2.5%
Immortal increfs834,923,8429.2%841,131,6658.9%0.7%
Allocations to 4 kbytes605,2000.1%608,5800.1%0.6%
Immortal decrefs1,573,266,25914.3%1,579,468,66513.5%0.4%
Mortal increfs1,979,942,96421.7%1,981,884,12921.0%0.1%
Method cache hits102,346,792102,355,4020.0%
Frees479,400,280479,407,5300.0%
Allocations478,679,82048.4%478,685,18048.4%0.0%
Allocations from freelist509,725,12051.6%509,730,16051.6%0.0%
Frees to freelist509,886,920509,891,9600.0%
Allocations to 512 bytes478,072,70048.4%478,074,34048.4%0.0%
Inline values80800.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
13,1203,84073,656,8803,1203,84073,625,680
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-meteor_contest-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-meteor_contest-vs-base.md new file mode 100644 index 00000000..9fc24ecf --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-meteor_contest-vs-base.md @@ -0,0 +1,2016 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD62,308,2402,160-100.0%
COMPARE_OP35,293,1403,520-100.0%
FOR_ITER_LIST50,678,9206,160-100.0%
LOAD_FAST_LOAD_FAST78,088,80019,240-100.0%
FOR_ITER24,710,0207,360-100.0%
POP_JUMP_IF_FALSE8,232,2402,720-100.0%
POP_JUMP_IF_TRUE41,727,92014,140-100.0%
STORE_SUBSCR_LIST_INT20,586,3807,020-100.0%
CALL_PY_GENERAL2,515,640860-100.0%
BINARY_OP8,232,3002,980-100.0%
STORE_FAST86,137,28032,580-100.0%
LOAD_GLOBAL_MODULE2,515,8801,100-100.0%
BINARY_SUBSCR_LIST_INT13,072,0205,880-100.0%
GET_ITER13,074,56011,500-99.9%
RESUME_CHECK2,515,7802,280-99.9%
COMPARE_OP_INT14,675,92013,560-99.9%
CALL_LEN14,676,10013,740-99.9%
LOAD_CONST14,870,00014,860-99.9%
LOAD_FAST80,651,84084,560-99.9%
LOAD_GLOBAL_BUILTIN18,796,02019,740-99.9%
CALL_METHOD_DESCRIPTOR_O2,517,9603,000-99.9%
CALL_BUILTIN_FAST_WITH_KEYWORDS4,119,6205,700-99.9%
BINARY_SUBSCR6,637,50010,280-99.8%
LOAD_ATTR_METHOD_NO_DICT2,522,7207,400-99.7%
POP_TOP5,040,0002,535,540-49.7%
CALL_METHOD_DESCRIPTOR_FAST4,7604,400-7.6%
PUSH_NULL5,2004,840-6.9%
CALL_BUILTIN_CLASS2,6802,500-6.7%
RETURN_CONST2,515,6802,515,6800.0%
CALL1,0001,0000.0%
LOAD_GLOBAL8408400.0%
LOAD_ATTR2802800.0%
BUILD_LIST2402400.0%
LOAD_DEREF2402400.0%
CALL_NON_PY_GENERAL1801800.0%
LOAD_ATTR_MODULE1801800.0%
RETURN_VALUE1601600.0%
CALL_FUNCTION_EX1601600.0%
FOR_ITER_RANGE1401400.0%
NOP80800.0%
CALL_INTRINSIC_180800.0%
COPY_FREE_VARS80800.0%
LIST_EXTEND80800.0%
LOAD_FAST_CHECK80800.0%
RESUME60600.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
STORE_SUBSCR40400.0%
ENTER_EXECUTOR2,553,900
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
8,229,860100.0%2,74090.1%-100.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
600.0%602.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure2,42099.2%22091.7%-90.9%
Success200.8%208.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
and other1,20049.6%10045.5%-91.7%
subtract other1,20049.6%10045.5%-91.7%
multiply different types200.8%209.1%0.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
13,072,02066.3%5,88036.4%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6,635,34033.7%9,90061.3%-99.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure2,10097.2%32084.2%-84.8%
Success602.8%6015.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
list slice2,00095.2%22068.8%-89.0%
string slice1004.8%10031.2%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
21,321,120100.0%29,34096.7%-99.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5000.0%5001.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success500100.0%500100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
35,284,24070.6%3,30019.3%-100.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
14,675,92029.4%13,56079.4%-99.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure8,82099.1%14063.6%-98.4%
Success800.9%8036.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
set8,80099.8%12085.7%-98.6%
list200.2%2014.3%0.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
50,679,06067.2%6,30046.1%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
24,703,74032.8%7,16052.4%-100.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure6,22099.0%14070.0%-97.7%
Success601.0%6030.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
set6,220100.0%140100.0%-97.7%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,522,900100.0%7,58096.4%-99.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1400.0%1401.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success140100.0%140100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
21,311,900100.0%20,84096.1%-99.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4200.0%4201.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success420100.0%420100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
20,586,380100.0%7,02099.4%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.0%200.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
74,875,12012.1%26,3000.3%-100.0%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
149,200,96024.2%93,8801.2%-99.9%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
392,653,02063.7%7,792,98098.5%-98.0%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
00.0%200.0%20 / 0 !!
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
COMPARE_OP35,284,24047.1%3,30013.6%-100.0%
FOR_ITER24,703,74033.0%7,16029.6%-100.0%
BINARY_OP8,229,86011.0%2,74011.3%-100.0%
BINARY_SUBSCR6,635,3408.9%9,90040.9%-99.9%
CALL5000.0%5002.1%0.0%
LOAD_GLOBAL4200.0%4201.7%0.0%
LOAD_ATTR1400.0%1400.6%0.0%
STORE_SUBSCR200.0%200.1%0.0%
BINARY_SLICE00.0%00.0%
STORE_SLICE00.0%00.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
RESUME2050.0%
RESUME_CHECK2050.0%
GET_ITER00.0%
NOP00.0%
POP_TOP00.0%
PUSH_NULL00.0%
RETURN_VALUE00.0%
BUILD_LIST00.0%
CALL_FUNCTION_EX00.0%
CALL_INTRINSIC_100.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault00.0%00.0%
Calls to Python functions inlined2,515,840100.0%2,515,840100.0%0.0%
Calls via PyEval_EvalFrame (total)00.0%00.0%
Calls via PyEval_EvalFrame (vector)00.0%00.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)00.0%00.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)1600.0%1600.0%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed2,515,840100.0%2,515,840100.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Mortal decrefs13,315,8841.3%22,277,9402.0%67.3%
Method cache collisions436244.2%
Interpreter mortal increfs252,447,18026.9%294,244,16030.2%16.6%
Interpreter mortal decrefs289,346,28027.6%322,190,46029.5%11.4%
Interpreter immortal increfs85,432,9609.1%77,202,9007.9%-9.6%
Method cache misses55585.5%
Method cache hits165162-1.8%
Interpreter immortal decrefs162,620,08015.5%165,174,10015.1%1.6%
Mortal increfs17,907,4401.9%17,913,1801.8%0.0%
Allocations from freelist6,638,24015.4%6,639,06015.4%0.0%
Frees to freelist6,638,2606,639,0800.0%
Allocations to 4 kbytes4,115,0409.6%4,115,4809.6%0.0%
Frees36,420,00036,422,7400.0%
Allocations36,420,02084.6%36,420,54084.6%0.0%
Allocations to 512 bytes32,304,98075.0%32,305,06075.0%0.0%
Immortal increfs583,507,17862.1%583,507,80460.0%0.0%
Immortal decrefs584,050,59455.7%584,050,70453.4%0.0%
Allocations over 4 kbytes00.0%00.0%
Inline values00
Materialize dict (on request)00
Materialize dict (new key)00
Materialize dict (too big)00
Materialize dict (str subclass)00
Method cache dunder hits2,3962,3960.0%
Method cache dunder misses440.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-nbody-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-nbody-vs-base.md new file mode 100644 index 00000000..5907a21a --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-nbody-vs-base.md @@ -0,0 +1,1828 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
POP_TOP6403,900509.4%
BINARY_SUBSCR_LIST_INT239,999,8208,820-100.0%
COPY480,000,00018,000-100.0%
SWAP480,000,00018,000-100.0%
STORE_SUBSCR_LIST_INT240,000,0009,000-100.0%
BINARY_OP_SUBTRACT_FLOAT192,013,8007,600-100.0%
UNPACK_SEQUENCE_TWO_TUPLE32,003,1601,300-100.0%
LOAD_CONST272,005,20011,300-100.0%
BINARY_OP_MULTIPLY_FLOAT432,019,88018,520-100.0%
LOAD_FAST1,014,419,36043,600-100.0%
JUMP_BACKWARD51,205,3602,340-100.0%
STORE_FAST_STORE_FAST128,013,6806,080-100.0%
BINARY_OP_ADD_FLOAT208,010,94010,880-100.0%
UNPACK_SEQUENCE_LIST80,008,2604,940-100.0%
UNPACK_SEQUENCE_TUPLE80,008,3205,000-100.0%
LOAD_FAST_LOAD_FAST128,023,8408,360-100.0%
STORE_FAST339,230,80022,620-100.0%
FOR_ITER_LIST54,405,8203,860-100.0%
BINARY_OP32,018,7605,240-100.0%
FOR_ITER_RANGE3,200,360660-100.0%
GET_ITER6,400,9602,700-100.0%
LOAD_GLOBAL_MODULE7207200.0%
UNPACK_SEQUENCE6806800.0%
RESUME_CHECK6206200.0%
RETURN_VALUE4804800.0%
STORE_SUBSCR4804800.0%
CALL_PY_GENERAL4804800.0%
BINARY_SUBSCR4004000.0%
PUSH_NULL4004000.0%
LOAD_GLOBAL4004000.0%
CALL3603600.0%
FOR_ITER2802800.0%
LOAD_DEREF2402400.0%
RETURN_CONST2402400.0%
CALL_BUILTIN_CLASS2002000.0%
LOAD_GLOBAL_BUILTIN2002000.0%
CALL_NON_PY_GENERAL1801800.0%
LOAD_ATTR_MODULE1801800.0%
CALL_FUNCTION_EX1601600.0%
LOAD_ATTR1201200.0%
RESUME1001000.0%
NOP80800.0%
BUILD_LIST80800.0%
CALL_INTRINSIC_180800.0%
COPY_FREE_VARS80800.0%
LIST_EXTEND80800.0%
BINARY_SUBSCR_DICT60600.0%
ENTER_EXECUTOR6,660
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
832,044,62096.3%37,00087.6%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
32,009,3003.7%3,8009.0%-100.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure8,40088.8%38026.4%-95.5%
Success1,06011.2%1,06073.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
power8,12096.7%16042.1%-98.0%
true divide float2803.3%22057.9%-21.4%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
239,999,880100.0%8,88095.7%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2000.0%2002.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success200100.0%200100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
18032.1%18032.1%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
20035.7%20035.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success180100.0%180100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
57,606,180100.0%4,52094.2%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1400.0%1402.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success140100.0%140100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6020.0%6020.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
18060.0%18060.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success60100.0%60100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
20015.2%20015.2%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
92069.7%92069.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success200100.0%200100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
240,000,000100.0%9,00094.9%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2400.0%2402.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success240100.0%240100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
192,019,740100.0%11,24094.3%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3400.0%3402.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success340100.0%340100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
1,561,673,00034.8%73,22032.3%-100.0%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
2,899,301,86064.5%145,58064.2%-100.0%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
32,021,4800.7%7,9603.5%-100.0%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
00.0%00.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
BINARY_OP32,009,300100.0%3,80073.6%-100.0%
UNPACK_SEQUENCE3400.0%3406.6%0.0%
STORE_SUBSCR2400.0%2404.7%0.0%
BINARY_SUBSCR2000.0%2003.9%0.0%
LOAD_GLOBAL2000.0%2003.9%0.0%
CALL1800.0%1803.5%0.0%
FOR_ITER1400.0%1402.7%0.0%
LOAD_ATTR600.0%601.2%0.0%
BINARY_SLICE00.0%00.0%
STORE_SLICE00.0%00.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault00.0%00.0%
Calls to Python functions inlined720100.0%720100.0%0.0%
Calls via PyEval_EvalFrame (total)00.0%00.0%
Calls via PyEval_EvalFrame (vector)00.0%00.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)00.0%00.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)16022.2%16022.2%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed720100.0%720100.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Interpreter immortal increfs480,001,00016.7%240,010,0009.1%-50.0%
Immortal decrefs1,3190.0%1,6780.0%27.2%
Method cache misses2019-5.0%
Method cache collisions2019-5.0%
Method cache hits40412.5%
Interpreter mortal increfs2,374,536,68082.7%2,390,533,96090.3%0.7%
Interpreter mortal decrefs1,590,464,30046.8%1,600,061,40046.9%0.6%
Mortal decrefs1,328,073,78139.1%1,334,481,36039.1%0.5%
Mortal increfs6,403,4800.2%6,408,2800.2%0.1%
Frees9,560,6619,562,8600.0%
Immortal increfs9,561,9000.3%9,562,6780.4%0.0%
Allocations9,561,2601.8%9,561,6801.8%0.0%
Interpreter immortal decrefs480,042,32014.1%480,049,36014.1%0.0%
Allocations to 512 bytes9,561,2601.8%9,561,2801.8%0.0%
Allocations from freelist528,036,82098.2%528,037,38098.2%0.0%
Frees to freelist528,036,980528,037,5400.0%
Allocations to 4 kbytes00.0%4000.0%400 / 0 !!
Allocations over 4 kbytes00.0%00.0%
Inline values00
Materialize dict (on request)00
Materialize dict (new key)00
Materialize dict (too big)00
Materialize dict (str subclass)00
Method cache dunder hits00
Method cache dunder misses00
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-nqueens-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-nqueens-vs-base.md new file mode 100644 index 00000000..72ededf2 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-nqueens-vs-base.md @@ -0,0 +1,2225 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD129,911,2003,220-100.0%
STORE_SLICE11,084,960580-100.0%
TO_BOOL_INT6,451,180440-100.0%
STORE_SUBSCR_LIST_INT35,071,9402,720-100.0%
BINARY_SUBSCR_LIST_INT47,974,0004,320-100.0%
BINARY_OP11,088,2601,060-100.0%
LOAD_FAST_LOAD_FAST122,752,16011,780-100.0%
BINARY_SLICE28,621,1202,760-100.0%
FOR_ITER_GEN6,451,3401,040-100.0%
UNARY_NEGATIVE12,902,0802,880-100.0%
STORE_SUBSCR6,452,9201,660-100.0%
CALL_TUPLE_16,451,3001,700-100.0%
BINARY_SUBSCR6,453,3202,060-100.0%
BINARY_OP_SUBTRACT_INT31,325,680339,780-98.9%
LOAD_CONST99,104,0806,796,880-93.1%
FOR_ITER_RANGE78,639,8406,790,800-91.4%
BINARY_OP_ADD_INT73,779,7406,452,860-91.3%
STORE_FAST129,912,24013,245,160-89.8%
FOR_ITER_LIST58,060,7606,451,760-88.9%
BINARY_SUBSCR_TUPLE_INT105,923,76013,241,520-87.5%
LOAD_DEREF105,938,88013,256,640-87.5%
SWAP47,974,2406,454,160-86.5%
COPY41,523,2006,452,720-84.5%
POP_JUMP_IF_FALSE30,438,4806,452,500-78.8%
LOAD_FAST236,851,36053,310,060-77.5%
COMPARE_OP_INT24,325,2806,790,040-72.1%
CALL_BUILTIN_CLASS19,692,5006,791,020-65.5%
GET_ITER19,691,9206,791,580-65.5%
LOAD_GLOBAL_BUILTIN32,933,18013,582,100-58.8%
MAKE_FUNCTION13,240,4806,790,880-48.7%
BUILD_TUPLE13,240,4806,790,880-48.7%
SET_FUNCTION_ATTRIBUTE13,240,4806,790,880-48.7%
CALL_PY_EXACT_ARGS13,240,5406,790,940-48.7%
COPY_FREE_VARS13,240,5606,790,960-48.7%
RETURN_GENERATOR13,240,8006,791,200-48.7%
POP_TOP138,195,280125,301,280-9.3%
RESUME_CHECK125,630,500119,181,460-5.1%
INTERPRETER_EXIT119,179,380119,179,3800.0%
YIELD_VALUE112,389,760112,389,7600.0%
RETURN_CONST13,240,96013,240,9600.0%
CALL_LEN6,789,3806,789,3800.0%
STORE_DEREF6,451,3606,451,3600.0%
POP_JUMP_IF_TRUE338,080338,0800.0%
JUMP_FORWARD14,72014,7200.0%
CALL1,0801,0800.0%
LOAD_GLOBAL8408400.0%
PUSH_NULL4804800.0%
LOAD_GLOBAL_MODULE4004000.0%
MAKE_CELL3203200.0%
CALL_NON_PY_GENERAL3203200.0%
RESUME3003000.0%
FOR_ITER2802800.0%
END_FOR1601600.0%
COMPARE_OP1601600.0%
POP_JUMP_IF_NOT_NONE1601600.0%
CALL_PY_GENERAL1401400.0%
LOAD_ATTR_MODULE1201200.0%
NOP80800.0%
RETURN_VALUE80800.0%
CALL_FUNCTION_EX80800.0%
LOAD_ATTR80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
TO_BOOL40400.0%
ENTER_EXECUTOR112,377,420
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
11,085,1609.5%7800.0%-100.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
105,105,48090.5%6,792,700100.0%-93.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure2,90093.5%8028.6%-97.2%
Success2006.5%20071.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
add other2,900100.0%80100.0%-97.2%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
28,621,120100.0%2,760100.0%-100.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6,451,3604.0%1,7600.0%-100.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
153,897,76096.0%13,245,840100.0%-91.4%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,80091.8%14046.7%-92.2%
Success1608.2%16053.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
out of range1,76097.8%10071.4%-94.3%
list slice402.2%4028.6%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
46,173,720100.0%20,373,040100.0%-55.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5400.0%5400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success540100.0%540100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
24,325,280100.0%6,790,040100.0%-72.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
800.0%800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success80100.0%80100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
143,151,940100.0%13,243,600100.0%-90.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1400.0%1400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success140100.0%140100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4020.0%4020.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
12060.0%12060.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
32,933,580100.0%13,582,500100.0%-58.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4200.0%4200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success420100.0%420100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_SLICE + +
+ specialization stats for STORE_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
11,084,960100.0%580100.0%-100.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
35,071,94084.5%2,72062.1%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6,451,10015.5%1,50034.2%-100.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,76096.7%10062.5%-94.3%
Success603.3%6037.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
out of range1,760100.0%100100.0%-94.3%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6,451,180100.0%44091.7%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.0%204.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
200.0%800.0%300.0%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
63,703,0602.9%10,6000.0%-100.0%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
672,741,94031.0%193,212,84023.3%-71.3%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
1,433,013,84066.1%636,027,00076.7%-55.6%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
STORE_SLICE11,084,96017.4%5806.7%-100.0%
BINARY_OP11,085,16017.4%7809.0%-100.0%
BINARY_SLICE28,621,12044.9%2,76032.0%-100.0%
STORE_SUBSCR6,451,10010.1%1,50017.4%-100.0%
BINARY_SUBSCR6,451,36010.1%1,76020.4%-100.0%
CALL5400.0%5406.3%0.0%
LOAD_GLOBAL4200.0%4204.9%0.0%
FOR_ITER1400.0%1401.6%0.0%
COMPARE_OP800.0%800.9%0.0%
LOAD_ATTR400.0%400.5%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
RESUME2050.0%8050.0%300.0%
RESUME_CHECK2050.0%8050.0%300.0%
CACHE00.0%00.0%
END_FOR00.0%00.0%
GET_ITER00.0%00.0%
INTERPRETER_EXIT00.0%00.0%
MAKE_FUNCTION00.0%00.0%
NOP00.0%00.0%
POP_TOP00.0%00.0%
PUSH_NULL00.0%00.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault119,179,38085.8%119,179,38085.8%0.0%
Calls to Python functions inlined19,692,22014.2%19,692,22014.2%0.0%
Calls via PyEval_EvalFrame (total)119,179,38085.8%119,179,38085.8%0.0%
Calls via PyEval_EvalFrame (vector)1600.0%1600.0%0.0%
Calls via PyEval_EvalFrame (generator)119,179,22085.8%119,179,22085.8%0.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)1600.0%1600.0%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)800.0%800.0%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed13,241,0409.5%13,241,0409.5%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache dunder misses6020-66.7%
Method cache collisions8141-49.4%
Interpreter mortal increfs334,617,18020.1%486,026,70028.5%45.2%
Interpreter mortal decrefs479,546,20023.9%624,504,90027.5%30.2%
Interpreter immortal decrefs835,889,58041.6%948,267,32041.7%13.4%
Interpreter immortal increfs818,129,70049.2%712,921,02041.8%-12.9%
Mortal decrefs134,367,3416.7%140,826,0246.2%4.8%
Allocations to 4 kbytes6,320,4803.1%6,320,7403.1%0.0%
Mortal increfs114,246,7806.9%114,251,1016.7%0.0%
Frees111,923,921111,926,1020.0%
Allocations from freelist92,653,20045.3%92,654,76045.3%0.0%
Frees to freelist92,693,98092,695,5400.0%
Allocations111,960,94054.7%111,961,40054.7%0.0%
Method cache dunder hits12,902,50012,902,5400.0%
Allocations to 512 bytes105,640,46051.6%105,640,66051.6%0.0%
Immortal increfs394,365,82223.7%394,366,52223.1%0.0%
Immortal decrefs558,776,32127.8%558,776,56024.6%0.0%
Allocations over 4 kbytes00.0%00.0%
Inline values00
Materialize dict (on request)00
Materialize dict (new key)00
Materialize dict (too big)00
Materialize dict (str subclass)00
Method cache hits19190.0%
Method cache misses21210.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1203,840143,620203,840153,820
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pathlib-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pathlib-vs-base.md new file mode 100644 index 00000000..07780bf4 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pathlib-vs-base.md @@ -0,0 +1,2956 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD12,004,2603,800-100.0%
POP_JUMP_IF_NONE2,560,2602,120-99.9%
LIST_APPEND2,721,4402,760-99.9%
FOR_ITER5,926,8806,020-99.9%
STORE_FAST_LOAD_FAST2,721,5002,820-99.9%
CALL_KW_NON_PY3,359,9804,120-99.9%
FOR_ITER_LIST2,724,4204,020-99.9%
TO_BOOL_NONE1,930,8003,000-99.8%
LOAD_DEREF7,044,08019,480-99.7%
LOAD_FAST_LOAD_FAST6,737,10021,260-99.7%
TO_BOOL_ALWAYS_TRUE648,5202,820-99.6%
LOAD_CONST3,401,72045,000-98.7%
LOAD_ATTR652,80016,300-97.5%
POP_TOP4,008,520660,000-83.5%
LOAD_ATTR_SLOT8,650,7203,373,960-61.0%
FOR_ITER_RANGE920460-50.0%
FOR_ITER_TUPLE6,722,7603,361,660-50.0%
STORE_ATTR_SLOT6,725,4003,365,600-50.0%
CALL_PY_GENERAL6,723,7403,367,880-49.9%
LOAD_ATTR_MODULE6,732,3003,376,160-49.9%
CALL_NON_PY_GENERAL6,567,9403,373,600-48.6%
PUSH_NULL12,650,0606,735,620-46.8%
CONTAINS_OP_SET540340-37.0%
EXTENDED_ARG1,440940-34.7%
BINARY_SUBSCR_GETITEM240160-33.3%
LOAD_ATTR_METHOD_NO_DICT10,093,1806,737,040-33.3%
STORE_FAST20,047,72013,495,960-32.7%
POP_JUMP_IF_TRUE9,293,2406,737,480-27.5%
LOAD_GLOBAL_MODULE13,459,50010,102,800-24.9%
BINARY_OP_ADD_INT740580-21.6%
UNPACK_SEQUENCE_TWO_TUPLE660520-21.2%
RETURN_VALUE20,186,06016,830,100-16.6%
TO_BOOL_BOOL8,010,0606,737,400-15.9%
POP_JUMP_IF_FALSE8,033,8606,760,380-15.9%
BINARY_SUBSCR_STR_INT640540-15.6%
RESUME_CHECK24,189,02020,832,280-13.9%
LOAD_FAST64,475,72057,284,340-11.2%
LOAD_SPECIAL5,2804,720-10.6%
BINARY_SUBSCR_LIST_INT3,1002,780-10.3%
LOAD_FAST_AND_CLEAR2,7202,440-10.3%
CALL_BUILTIN_O820740-9.8%
LOAD_ATTR_INSTANCE_VALUE9,7408,880-8.8%
SWAP13,52012,400-8.3%
CALL_METHOD_DESCRIPTOR_NOARGS3,9003,620-7.2%
STORE_FAST_STORE_FAST2,1402,000-6.5%
TO_BOOL_INT960900-6.2%
CALL_PY_EXACT_ARGS6,5006,100-6.2%
POP_JUMP_IF_NOT_NONE3,1202,960-5.1%
CONTAINS_OP3,1803,040-4.4%
LOAD_FAST_CHECK2,6602,560-3.8%
STORE_ATTR_INSTANCE_VALUE6,5206,300-3.4%
LOAD_ATTR_METHOD_WITH_VALUES3,0802,980-3.2%
CALL_BOUND_METHOD_EXACT_ARGS3,1603,060-3.2%
BINARY_OP1,4401,400-2.8%
COMPARE_OP_STR10,28010,000-2.7%
CALL_BUILTIN_CLASS5,3405,240-1.9%
BUILD_TUPLE4,4604,400-1.3%
CALL_BUILTIN_FAST_WITH_KEYWORDS3,365,5003,365,100-0.0%
CALL_STR_13,362,5803,362,300-0.0%
COPY3,363,0203,362,740-0.0%
BUILD_LIST3,364,5803,364,300-0.0%
GET_ITER3,368,5003,368,220-0.0%
IS_OP3,362,6403,362,380-0.0%
LOAD_GLOBAL_BUILTIN20,185,36020,184,040-0.0%
CALL_ISINSTANCE6,724,7206,724,300-0.0%
NOP6,730,2806,730,020-0.0%
RETURN_CONST3,364,9803,364,900-0.0%
TO_BOOL_STR3,365,6403,365,580-0.0%
INTERPRETER_EXIT17,447,20017,447,2000.0%
LOAD_ATTR_CLASS3,365,4203,365,4200.0%
CALL_LIST_APPEND3,361,5203,361,5200.0%
CALL_FUNCTION_EX3,361,4403,361,4400.0%
CALL_TYPE_13,361,3603,361,3600.0%
YIELD_VALUE640,000640,0000.0%
LOAD_ATTR_PROPERTY7,9007,9000.0%
CALL_LEN6,0806,0800.0%
BINARY_SUBSCR5,7805,7800.0%
COMPARE_OP_INT5,6205,6200.0%
MAKE_CELL5,1205,1200.0%
LOAD_ATTR_NONDESCRIPTOR_NO_DICT5,0405,0400.0%
CALL2,9402,9400.0%
TO_BOOL_LIST2,8202,8200.0%
UNPACK_SEQUENCE_TUPLE2,8202,8200.0%
TO_BOOL2,6602,6600.0%
CALL_METHOD_DESCRIPTOR_FAST2,6402,6400.0%
SET_FUNCTION_ATTRIBUTE2,5602,5600.0%
STORE_DEREF2,5602,5600.0%
LOAD_GLOBAL2,1202,1200.0%
JUMP_FORWARD1,7801,7800.0%
CHECK_EXC_MATCH1,5201,5200.0%
POP_EXCEPT1,5201,5200.0%
PUSH_EXC_INFO1,5201,5200.0%
EXIT_INIT_CHECK1,4201,4200.0%
CALL_ALLOC_AND_ENTER_INIT1,4201,4200.0%
BINARY_OP_ADD_UNICODE1,3801,3800.0%
COPY_FREE_VARS1,3601,3600.0%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS1,3401,3400.0%
CALL_BUILTIN_FAST1,2801,2800.0%
MAKE_FUNCTION1,2801,2800.0%
RETURN_GENERATOR1,2801,2800.0%
COMPARE_OP9609600.0%
RESUME6406400.0%
STORE_ATTR4004000.0%
BINARY_OP_SUBTRACT_INT2602600.0%
BINARY_SUBSCR_TUPLE_INT2602600.0%
CALL_METHOD_DESCRIPTOR_O1801800.0%
FORMAT_SIMPLE1401400.0%
BUILD_STRING1201200.0%
UNPACK_SEQUENCE1201200.0%
UNARY_NOT1001000.0%
BUILD_MAP80800.0%
CALL_INTRINSIC_180800.0%
CALL_KW80800.0%
LIST_EXTEND80800.0%
BINARY_SUBSCR_DICT80800.0%
STORE_SUBSCR_DICT80800.0%
UNARY_INVERT60600.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
CONTAINS_OP_DICT60600.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK60600.0%
STORE_SUBSCR_LIST_INT60600.0%
BINARY_OP_INPLACE_ADD_UNICODE40400.0%
STORE_SUBSCR40400.0%
CALL_TUPLE_140400.0%
BINARY_OP_MULTIPLY_INT20200.0%
ENTER_EXECUTOR4,008,260
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,50063.5%2,34062.6%-6.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,28032.5%1,24033.2%-3.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success10062.5%10062.5%0.0%
Failure6037.5%6037.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
and int60100.0%60100.0%0.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
4,24042.0%3,74039.0%-11.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5,34052.9%5,34055.6%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
800.8%800.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success409.1%409.1%0.0%
Failure40090.9%40090.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
out of range30075.0%30075.0%0.0%
list slice10025.0%10025.0%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
20,211,520100.0%20,209,360100.0%-0.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,6400.0%1,6400.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
200.0%200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,320100.0%1,320100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6075.0%6075.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
15,86094.1%15,58094.0%-1.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6603.9%6604.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
400.2%400.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success300100.0%300100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
60015.9%40011.6%-33.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,96078.3%2,84082.6%-4.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure220100.0%200100.0%-9.1%
Success00.0%00.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple20090.9%200100.0%0.0%
str209.1%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5,924,38038.5%5,4800.2%-99.9%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
9,448,10061.5%3,366,14099.8%-64.4%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure2,40096.0%44081.5%-81.7%
Success1004.0%10018.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other86035.8%10022.7%-88.4%
map1,52063.3%32072.7%-78.9%
enumerate200.8%204.5%0.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
650,3802.2%14,1000.1%-97.8%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
28,866,02097.8%16,876,02099.9%-41.5%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1,4200.0%1,4200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure98040.2%76034.2%-22.4%
Success1,46059.8%1,46065.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
method32032.7%32042.1%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
33,644,860100.0%30,286,840100.0%-10.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,2600.0%1,2600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success860100.0%860100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6,731,920100.0%3,371,900100.0%-49.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2000.0%2000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success200100.0%200100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4022.2%4022.2%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
14077.8%14077.8%0.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
950,3006.9%1,1800.0%-99.9%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
12,834,86093.1%10,108,520100.0%-21.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,0800.0%2,0800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success18,40099.5%50083.3%-97.3%
Failure1000.5%10016.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other100100.0%100100.0%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
3,48096.7%3,34096.5%-4.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
802.2%802.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
951,8600.2%2,7400.0%-99.7%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
6,599,4001.7%41,8600.0%-99.4%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
220,946,74057.9%157,666,22058.5%-28.6%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
152,775,26040.1%111,821,96041.5%-26.8%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
FOR_ITER5,924,38089.9%5,48015.6%-99.9%
LOAD_ATTR650,3809.9%14,10040.3%-97.8%
CONTAINS_OP2,9600.0%2,8408.1%-4.1%
BINARY_OP1,2800.0%1,2403.5%-3.1%
BINARY_SUBSCR5,3400.1%5,34015.2%0.0%
TO_BOOL2,0800.0%2,0805.9%0.0%
CALL1,6400.0%1,6404.7%0.0%
LOAD_GLOBAL1,2600.0%1,2603.6%0.0%
COMPARE_OP6600.0%6601.9%0.0%
STORE_ATTR2000.0%2000.6%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
TO_BOOL_NONE475,32049.9%1,08039.4%-99.8%
TO_BOOL_ALWAYS_TRUE474,88049.9%
LOAD_ATTR_SLOT1,4200.1%1,42051.8%0.0%
TO_BOOL_LIST600.0%602.2%0.0%
BINARY_SUBSCR_LIST_INT400.0%401.5%0.0%
BINARY_SUBSCR_STR_INT400.0%401.5%0.0%
COMPARE_OP_STR400.0%401.5%0.0%
TO_BOOL_INT400.0%401.5%0.0%
CALL_BUILTIN_FAST200.0%200.7%0.0%
CACHE00.0%00.0%
BINARY_OP_INPLACE_ADD_UNICODE00.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault17,447,24072.1%17,447,24072.1%0.0%
Calls to Python functions inlined6,743,70027.9%6,743,70027.9%0.0%
Calls via PyEval_EvalFrame (total)17,447,24072.1%17,447,24072.1%0.0%
Calls via PyEval_EvalFrame (vector)16,805,96069.5%16,805,96069.5%0.0%
Calls via PyEval_EvalFrame (generator)641,2802.7%641,2802.7%0.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)16,805,96069.5%16,805,96069.5%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)3,362,94013.9%3,362,94013.9%0.0%
Calls via PyEval_EvalFrame (function ex)1600.0%1600.0%0.0%
Calls via PyEval_EvalFrame (api)2200.0%2200.0%0.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created1,6000.0%1,6000.0%0.0%
Frames pushed23,551,08097.4%23,551,08097.4%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Allocations to 4 kbytes400.0%4000.0%900.0%
Interpreter immortal decrefs14,655,0803.3%20,117,2204.4%37.3%
Method cache dunder misses352306-13.1%
Method cache collisions883827-6.3%
Interpreter mortal increfs215,529,52054.1%220,648,76054.7%2.4%
Mortal decrefs177,743,79139.5%181,103,85239.3%1.9%
Interpreter mortal decrefs226,787,72050.4%228,543,62049.6%0.8%
Method cache misses989988-0.1%
Immortal decrefs30,991,8716.9%30,983,8566.7%-0.0%
Method cache hits1,296,3111,296,092-0.0%
Interpreter immortal increfs22,194,9805.6%22,193,3205.5%-0.0%
Mortal increfs64,921,68416.3%64,925,37616.1%0.0%
Frees to freelist30,117,98030,117,120-0.0%
Allocations from freelist30,116,84022.8%30,116,08022.8%-0.0%
Immortal increfs95,453,09824.0%95,454,57223.7%0.0%
Allocations101,800,80077.2%101,802,12077.2%0.0%
Allocations to 512 bytes101,800,76077.2%101,801,72077.2%0.0%
Method cache dunder hits20,176,64820,176,6940.0%
Frees111,094,104111,094,1440.0%
Allocations over 4 kbytes00.0%00.0%
Inline values1,4401,4400.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
11003,8401,745,1201007801,532,240
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pickle-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pickle-vs-base.md new file mode 100644 index 00000000..e774964b --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pickle-vs-base.md @@ -0,0 +1,1455 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD163,840640-99.6%
FOR_ITER_TUPLE163,820660-99.6%
CALL_BUILTIN_FAST_WITH_KEYWORDS2,457,20011,200-99.5%
LOAD_FAST_LOAD_FAST2,457,60011,600-99.5%
PUSH_NULL2,458,00012,000-99.5%
LOAD_FAST2,499,12012,540-99.5%
POP_TOP2,457,68013,020-99.5%
STORE_FAST164,2401,360-99.2%
FOR_ITER_RANGE41,020360-99.1%
GET_ITER41,040460-98.9%
CALL9609600.0%
LOAD_GLOBAL_MODULE3603600.0%
LOAD_GLOBAL2802800.0%
LOAD_ATTR2602600.0%
LOAD_DEREF2402400.0%
LOAD_ATTR_MODULE2402400.0%
CALL_NON_PY_GENERAL1801800.0%
RETURN_VALUE1601600.0%
CALL_FUNCTION_EX1601600.0%
RESUME_CHECK1201200.0%
NOP80800.0%
BUILD_LIST80800.0%
BUILD_TUPLE80800.0%
CALL_INTRINSIC_180800.0%
COPY_FREE_VARS80800.0%
FOR_ITER80800.0%
LIST_EXTEND80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
CALL_BUILTIN_CLASS60600.0%
LOAD_GLOBAL_BUILTIN60600.0%
BINARY_OP40400.0%
RESUME40400.0%
ENTER_EXECUTOR3,820
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2020.0%2020.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6060.0%6060.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,457,260100.0%11,26092.1%-99.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4800.0%4803.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success480100.0%480100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
204,840100.0%1,02092.7%-99.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.0%403.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
16032.0%16032.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
24048.0%24048.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success100100.0%100100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
14020.0%14020.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
42060.0%42060.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success140100.0%140100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
2,663,12020.6%13,30018.6%-99.5%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
10,242,60079.4%56,52079.1%-99.4%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
1,6200.0%1,6202.3%0.0%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
00.0%00.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
CALL48057.1%48057.1%0.0%
LOAD_ATTR16019.0%16019.0%0.0%
LOAD_GLOBAL14016.7%14016.7%0.0%
FOR_ITER404.8%404.8%0.0%
BINARY_OP202.4%202.4%0.0%
BINARY_SLICE00.0%00.0%
STORE_SLICE00.0%00.0%
BINARY_SUBSCR00.0%00.0%
GET_ITER00.0%00.0%
NOP00.0%00.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault00.0%00.0%
Calls to Python functions inlined160100.0%160100.0%0.0%
Calls via PyEval_EvalFrame (total)00.0%00.0%
Calls via PyEval_EvalFrame (vector)00.0%00.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)00.0%00.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)160100.0%160100.0%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed160100.0%160100.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache dunder misses13,77454,557296.1%
Method cache collisions832,890914,5829.8%
Method cache misses819,283860,2045.0%
Interpreter mortal increfs5,081,1401.1%5,202,2601.1%2.4%
Interpreter mortal decrefs7,641,4001.6%7,721,6601.6%1.1%
Method cache hits5,734,4975,693,576-0.7%
Method cache dunder hits7,359,0267,318,243-0.6%
Interpreter immortal decrefs2,478,4000.5%2,482,2600.5%0.2%
Immortal decrefs85,225,50417.9%85,348,59517.9%0.1%
Immortal increfs94,297,53420.1%94,420,08220.2%0.1%
Mortal decrefs380,928,51480.0%381,009,69179.9%0.0%
Mortal increfs366,224,36278.2%366,265,32278.2%0.0%
Frees22,998,49522,997,823-0.0%
Allocations over 4 kbytes3,276,80012.1%3,276,84012.1%0.0%
Allocations22,999,30084.9%22,999,36084.9%0.0%
Allocations to 512 bytes16,445,70060.7%16,445,72060.7%0.0%
Allocations from freelist4,096,40015.1%4,096,40015.1%0.0%
Frees to freelist4,096,3404,096,3400.0%
Allocations to 4 kbytes3,276,80012.1%3,276,80012.1%0.0%
Inline values00
Interpreter immortal increfs2,457,6600.5%2,457,6600.5%0.0%
Materialize dict (on request)00
Materialize dict (new key)00
Materialize dict (too big)00
Materialize dict (str subclass)00
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pickle_dict-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pickle_dict-vs-base.md new file mode 100644 index 00000000..36e92034 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pickle_dict-vs-base.md @@ -0,0 +1,1443 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD81,920320-99.6%
FOR_ITER_RANGE81,980360-99.6%
CALL_BUILTIN_FAST_WITH_KEYWORDS409,5001,800-99.6%
LOAD_FAST_LOAD_FAST409,6001,900-99.5%
LOAD_ATTR_MODULE409,6801,980-99.5%
POP_TOP409,6802,060-99.5%
PUSH_NULL410,0002,300-99.4%
LOAD_FAST410,0802,380-99.4%
STORE_FAST82,240700-99.1%
LOAD_ATTR4204200.0%
CALL3603600.0%
LOAD_DEREF2402400.0%
LOAD_GLOBAL_MODULE2402400.0%
LOAD_GLOBAL2002000.0%
CALL_NON_PY_GENERAL1801800.0%
RETURN_VALUE1601600.0%
CALL_FUNCTION_EX1601600.0%
RESUME_CHECK1201200.0%
GET_ITER80800.0%
NOP80800.0%
BUILD_LIST80800.0%
CALL_INTRINSIC_180800.0%
COPY_FREE_VARS80800.0%
LIST_EXTEND80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
CALL_BUILTIN_CLASS60600.0%
LOAD_GLOBAL_BUILTIN60600.0%
BINARY_OP40400.0%
FOR_ITER40400.0%
RESUME40400.0%
ENTER_EXECUTOR60
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2020.0%2020.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6060.0%6060.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
409,56099.9%1,86083.8%-99.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1800.0%1808.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success180100.0%180100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
81,980100.0%36090.0%-99.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.0%205.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
409,68099.9%1,98082.5%-99.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2400.1%24010.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success180100.0%180100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
10020.0%10020.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
30060.0%30060.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success100100.0%100100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
901,88033.3%4,86029.1%-99.5%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
1,804,60066.7%10,80064.6%-99.4%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
1,0600.0%1,0606.3%0.0%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
00.0%00.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
LOAD_ATTR24042.9%24042.9%0.0%
CALL18032.1%18032.1%0.0%
LOAD_GLOBAL10017.9%10017.9%0.0%
BINARY_OP203.6%203.6%0.0%
FOR_ITER203.6%203.6%0.0%
BINARY_SLICE00.0%00.0%
STORE_SLICE00.0%00.0%
BINARY_SUBSCR00.0%00.0%
GET_ITER00.0%00.0%
NOP00.0%00.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault00.0%00.0%
Calls to Python functions inlined160100.0%160100.0%0.0%
Calls via PyEval_EvalFrame (total)00.0%00.0%
Calls via PyEval_EvalFrame (vector)00.0%00.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)00.0%00.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)160100.0%160100.0%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed160100.0%160100.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache collisions65661.5%
Interpreter immortal decrefs430,4000.0%430,4800.0%0.0%
Interpreter mortal increfs1,230,5600.1%1,230,6200.1%0.0%
Interpreter mortal decrefs1,702,0400.2%1,702,1200.2%0.0%
Allocations to 4 kbytes819,20024.5%819,22024.5%0.0%
Allocations3,338,500100.0%3,338,520100.0%0.0%
Frees3,338,4823,338,4850.0%
Mortal increfs83,559,5008.8%83,559,5208.8%0.0%
Mortal decrefs84,378,6858.9%84,378,6888.9%0.0%
Immortal increfs861,860,46691.0%861,860,48691.0%0.0%
Immortal decrefs860,979,70190.9%860,979,69890.9%-0.0%
Allocations from freelist3200.0%3200.0%0.0%
Frees to freelist2602600.0%
Allocations to 512 bytes1,700,10050.9%1,700,10050.9%0.0%
Allocations over 4 kbytes819,20024.5%819,20024.5%0.0%
Inline values00
Interpreter immortal increfs409,6600.0%409,6600.0%0.0%
Materialize dict (on request)00
Materialize dict (new key)00
Materialize dict (too big)00
Materialize dict (str subclass)00
Method cache hits819,377819,3770.0%
Method cache misses83830.0%
Method cache dunder hits00
Method cache dunder misses00
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pickle_list-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pickle_list-vs-base.md new file mode 100644 index 00000000..496ed782 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pickle_list-vs-base.md @@ -0,0 +1,1443 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD327,680320-99.9%
FOR_ITER_RANGE327,740360-99.9%
CALL_BUILTIN_FAST_WITH_KEYWORDS3,276,6003,600-99.9%
LOAD_FAST_LOAD_FAST3,276,8003,800-99.9%
POP_TOP3,276,8803,960-99.9%
PUSH_NULL3,277,2004,200-99.9%
LOAD_FAST3,277,3604,360-99.9%
STORE_FAST328,080780-99.8%
CALL5605600.0%
LOAD_ATTR2602600.0%
LOAD_DEREF2402400.0%
LOAD_ATTR_MODULE2402400.0%
LOAD_GLOBAL_MODULE2402400.0%
LOAD_GLOBAL2002000.0%
CALL_NON_PY_GENERAL1801800.0%
RETURN_VALUE1601600.0%
CALL_FUNCTION_EX1601600.0%
RESUME_CHECK1201200.0%
GET_ITER80800.0%
NOP80800.0%
BUILD_LIST80800.0%
CALL_INTRINSIC_180800.0%
COPY_FREE_VARS80800.0%
LIST_EXTEND80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
CALL_BUILTIN_CLASS60600.0%
LOAD_GLOBAL_BUILTIN60600.0%
BINARY_OP40400.0%
FOR_ITER40400.0%
RESUME40400.0%
ENTER_EXECUTOR60
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2020.0%2020.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6060.0%6060.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
3,276,660100.0%3,66086.7%-99.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2800.0%2806.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success280100.0%280100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
327,740100.0%36090.0%-99.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.0%205.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
16032.0%16032.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
24048.0%24048.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success100100.0%100100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
10020.0%10020.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
30060.0%30060.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success100100.0%100100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
13,765,08079.2%18,56075.5%-99.9%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
3,605,30020.8%4,92020.0%-99.9%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
1,1000.0%1,1004.5%0.0%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
00.0%00.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
CALL28048.3%28048.3%0.0%
LOAD_ATTR16027.6%16027.6%0.0%
LOAD_GLOBAL10017.2%10017.2%0.0%
BINARY_OP203.4%203.4%0.0%
FOR_ITER203.4%203.4%0.0%
BINARY_SLICE00.0%00.0%
STORE_SLICE00.0%00.0%
BINARY_SUBSCR00.0%00.0%
GET_ITER00.0%00.0%
NOP00.0%00.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault00.0%00.0%
Calls to Python functions inlined160100.0%160100.0%0.0%
Calls via PyEval_EvalFrame (total)00.0%00.0%
Calls via PyEval_EvalFrame (vector)00.0%00.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)00.0%00.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)160100.0%160100.0%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed160100.0%160100.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache collisions64674.7%
Method cache misses8483-1.2%
Interpreter immortal decrefs3,297,6000.4%3,297,6800.4%0.0%
Interpreter mortal increfs6,555,6000.7%6,555,6600.7%0.0%
Interpreter mortal decrefs10,139,9601.1%10,140,0401.1%0.0%
Allocations to 4 kbytes6,553,60028.2%6,553,62028.2%0.0%
Allocations23,245,060100.0%23,245,080100.0%0.0%
Frees23,245,04023,245,0440.0%
Method cache hits6,553,6966,553,6970.0%
Mortal increfs209,716,14023.6%209,716,16023.6%0.0%
Mortal decrefs216,269,80024.3%216,269,80624.3%0.0%
Immortal increfs668,774,94875.3%668,774,96675.3%0.0%
Immortal decrefs661,914,02874.2%661,914,02074.2%-0.0%
Allocations from freelist3200.0%3200.0%0.0%
Frees to freelist2602600.0%
Allocations to 512 bytes13,414,66057.7%13,414,66057.7%0.0%
Allocations over 4 kbytes3,276,80014.1%3,276,80014.1%0.0%
Inline values00
Interpreter immortal increfs3,276,8600.4%3,276,8600.4%0.0%
Materialize dict (on request)00
Materialize dict (new key)00
Materialize dict (too big)00
Materialize dict (str subclass)00
Method cache dunder hits00
Method cache dunder misses00
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pickle_pure_python-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pickle_pure_python-vs-base.md new file mode 100644 index 00000000..166ebbf6 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pickle_pure_python-vs-base.md @@ -0,0 +1,2731 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD8,509,4401,920-100.0%
BINARY_SUBSCR_LIST_INT102,3801,540-98.5%
FOR_ITER_LIST7,065,560154,160-97.8%
BINARY_SUBSCR_TUPLE_INT3,481,580106,160-97.0%
UNPACK_SEQUENCE_TWO_TUPLE8,447,940358,900-95.8%
STORE_FAST_STORE_FAST8,448,000358,960-95.8%
FOR_ITER_TUPLE10,220660-93.5%
FOR_ITER1,946,620257,200-86.8%
FOR_ITER_RANGE2,620360-86.3%
COMPARE_OP2,745,080801,520-70.8%
SWAP1,484,800513,260-65.4%
COPY1,638,400666,860-59.3%
CALL_BOUND_METHOD_GENERAL15,308,6807,219,640-52.8%
CALL_PY_GENERAL16,025,1007,928,960-50.5%
CALL_METHOD_DESCRIPTOR_NOARGS16,281,5008,090,060-50.3%
TO_BOOL_BOOL32,102,08016,125,300-49.8%
POP_JUMP_IF_NONE43,571,20022,684,540-47.9%
LOAD_ATTR_METHOD_WITH_VALUES56,114,76029,492,280-47.4%
TO_BOOL_ALWAYS_TRUE42,397,44022,491,660-47.0%
LOAD_ATTR_METHOD_LAZY_DICT42,700,70022,795,860-46.6%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES28,671,86015,414,740-46.2%
CALL_METHOD_DESCRIPTOR_FAST27,699,14014,901,520-46.2%
RESUME_CHECK110,796,36059,852,020-46.0%
RETURN_VALUE40,755,34022,084,460-45.8%
PUSH_NULL29,235,60015,964,280-45.4%
POP_JUMP_IF_FALSE151,296,00083,887,460-44.6%
CALL_METHOD_DESCRIPTOR_O26,521,58014,705,780-44.6%
COMPARE_OP_INT56,317,94031,335,940-44.4%
CALL_BOUND_METHOD_EXACT_ARGS26,674,84014,851,940-44.3%
CALL_BUILTIN_FAST28,313,20015,812,180-44.2%
LOAD_FAST642,921,520359,058,720-44.2%
BINARY_OP24,942,82013,981,980-43.9%
CALL_PY_EXACT_ARGS52,323,38029,371,720-43.9%
POP_JUMP_IF_TRUE27,187,20015,305,380-43.7%
LOAD_ATTR_INSTANCE_VALUE220,210,020124,176,840-43.6%
LOAD_ATTR_METHOD_NO_DICT37,529,44021,352,920-43.1%
LOAD_CONST94,822,40054,008,060-43.0%
LOAD_GLOBAL_MODULE68,351,36039,310,500-42.5%
STORE_FAST128,215,44074,549,100-41.9%
CALL_BUILTIN_O36,454,20021,304,960-41.6%
JUMP_FORWARD11,520,0006,813,720-40.9%
CALL_TYPE_112,236,7207,526,880-38.5%
IS_OP24,524,80015,105,120-38.4%
LOAD_GLOBAL_BUILTIN107,160,70066,102,700-38.3%
LOAD_FAST_LOAD_FAST23,961,60015,299,580-36.1%
CONTAINS_OP_DICT10,239,9406,659,360-35.0%
EXTENDED_ARG9,472,0006,195,500-34.6%
TO_BOOL_INT10,086,3806,606,640-34.5%
STORE_SUBSCR_DICT10,086,3806,607,900-34.5%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS9,523,1606,246,660-34.4%
BUILD_TUPLE10,137,6806,657,940-34.3%
CALL_LEN20,479,80013,621,160-33.5%
POP_TOP81,664,08061,459,980-24.7%
RETURN_CONST70,195,20053,711,480-23.5%
GET_ITER514,640410,060-20.3%
NOP9,216,0807,680,340-16.7%
CALL_BUILTIN_CLASS767,960665,560-13.3%
CALL_NON_PY_GENERAL972,860863,360-11.3%
LOAD_ATTR1,081,600979,180-9.5%
CALL_KW_NON_PY255,940248,840-2.8%
TO_BOOL_NONE155,420152,100-2.1%
LOAD_ATTR_MODULE512,160505,060-1.4%
STORE_ATTR_INSTANCE_VALUE2,303,7002,303,7000.0%
POP_JUMP_IF_NOT_NONE307,200307,2000.0%
CALL_ISINSTANCE307,120307,1200.0%
INTERPRETER_EXIT204,820204,8200.0%
BUILD_MAP204,800204,8000.0%
EXIT_INIT_CHECK153,580153,5800.0%
CALL_ALLOC_AND_ENTER_INIT153,580153,5800.0%
CALL_KW_PY153,580153,5800.0%
TO_BOOL103,420103,4200.0%
COMPARE_OP_STR102,360102,3600.0%
CONTAINS_OP51,52051,5200.0%
CALL_FUNCTION_EX51,36051,3600.0%
BINARY_OP_ADD_INT51,18051,1800.0%
BINARY_SUBSCR_DICT51,18051,1800.0%
CALL5,7605,7600.0%
LOAD_GLOBAL4,2004,2000.0%
STORE_ATTR6006000.0%
RESUME6006000.0%
LOAD_DEREF2402400.0%
CALL_KW1601600.0%
BINARY_SUBSCR1201200.0%
UNPACK_SEQUENCE1201200.0%
BUILD_LIST80800.0%
CALL_INTRINSIC_180800.0%
COPY_FREE_VARS80800.0%
LIST_EXTEND80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
STORE_SUBSCR40400.0%
ENTER_EXECUTOR8,456,320
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
24,934,44099.8%13,976,26099.6%-43.9%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
51,2400.2%51,2400.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure8,34099.5%5,68099.3%-31.9%
Success400.5%400.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
add other8,14097.6%5,48096.5%-32.7%
rshift2002.4%2003.5%0.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
3,635,140100.0%158,88099.9%-95.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
600.0%600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success60100.0%60100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
281,835,80099.1%160,647,52098.9%-43.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
2,575,2200.9%1,763,5401.1%-31.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,8800.0%2,8800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success51,540100.0%36,220100.0%-29.7%
Failure00.0%00.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
8050.0%8050.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,723,9404.6%780,8602.4%-71.3%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
55,983,00094.6%31,001,00096.2%-44.6%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
437,3000.7%437,3001.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure20,42069.5%19,94069.0%-2.4%
Success8,96030.5%8,96031.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
big int20,420100.0%19,940100.0%-2.4%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
10,239,94099.5%6,659,36099.2%-35.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
51,2600.5%51,2600.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success6023.1%6023.1%0.0%
Failure20076.9%20076.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
list200100.0%200100.0%0.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
7,078,40078.4%155,18037.6%-97.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,945,68021.6%256,68062.2%-86.8%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure86091.5%44084.6%-48.8%
Success808.5%8015.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
enumerate860100.0%440100.0%-48.8%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
385,738,94099.7%213,737,70099.5%-44.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,077,4600.3%975,0600.5%-9.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,94046.9%1,92046.6%-1.0%
Success2,20053.1%2,20053.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
method1,940100.0%1,920100.0%-1.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
175,512,060100.0%105,413,200100.0%-39.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,1000.0%2,1000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success2,100100.0%2,100100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3000.0%3000.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,303,700100.0%2,303,700100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success300100.0%300100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
10,086,380100.0%6,607,900100.0%-34.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.0%200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
42,192,30099.0%22,748,36098.4%-46.1%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
304,1800.7%271,7401.2%-10.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
102,8000.2%102,8000.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success6,12096.5%5,52096.2%-9.8%
Failure2203.5%2203.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple220100.0%220100.0%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
8,447,940100.0%358,900100.0%-95.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
600.0%600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success60100.0%60100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
30,882,0601.2%16,185,8201.1%-47.6%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
1,142,187,36044.0%633,612,92042.7%-44.5%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
1,420,214,34054.7%831,795,96056.0%-41.4%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
3,316,7000.1%2,472,6600.2%-25.4%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
FOR_ITER1,945,6806.3%256,6801.6%-86.8%
COMPARE_OP2,723,9408.8%780,8604.8%-71.3%
BINARY_OP24,934,44080.8%13,976,26086.5%-43.9%
LOAD_ATTR1,077,4603.5%975,0606.0%-9.5%
TO_BOOL102,8000.3%102,8000.6%0.0%
CONTAINS_OP51,2600.2%51,2600.3%0.0%
CALL2,8800.0%2,8800.0%0.0%
LOAD_GLOBAL2,1000.0%2,1000.0%0.0%
STORE_ATTR3000.0%3000.0%0.0%
CALL_KW800.0%800.0%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
CALL_PY_EXACT_ARGS2,575,22077.6%1,763,54071.3%-31.5%
TO_BOOL_ALWAYS_TRUE152,6004.6%136,0605.5%-10.8%
TO_BOOL_NONE151,5804.6%135,6805.5%-10.5%
COMPARE_OP_INT437,30013.2%437,30017.7%0.0%
CACHE00.0%00.0%
EXIT_INIT_CHECK00.0%00.0%
GET_ITER00.0%00.0%
INTERPRETER_EXIT00.0%00.0%
NOP00.0%
POP_TOP00.0%
RESUME800.0%
RESUME_CHECK800.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault204,8200.2%204,8200.2%0.0%
Calls to Python functions inlined110,592,14099.8%110,592,14099.8%0.0%
Calls via PyEval_EvalFrame (total)204,8200.2%204,8200.2%0.0%
Calls via PyEval_EvalFrame (vector)204,8200.2%204,8200.2%0.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)204,8200.2%204,8200.2%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)1600.0%1600.0%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed110,950,540100.1%110,950,540100.1%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache dunder misses5,4679,23368.9%
Interpreter immortal increfs414,565,76021.0%348,826,64018.1%-15.9%
Method cache misses61,15156,345-7.9%
Interpreter immortal decrefs401,744,66020.0%410,188,52020.2%2.1%
Method cache collisions65,91764,844-1.6%
Interpreter mortal increfs1,271,509,50064.5%1,289,212,22067.1%1.4%
Interpreter mortal decrefs1,369,822,60068.2%1,387,267,28068.2%1.3%
Method cache dunder hits967,373963,607-0.4%
Allocations over 4 kbytes51,2000.0%51,3600.0%0.3%
Mortal decrefs144,242,6877.2%144,502,9717.1%0.2%
Allocations to 4 kbytes307,2000.3%307,3800.3%0.1%
Method cache hits13,411,28913,416,0750.0%
Immortal decrefs92,236,5974.6%92,241,9734.5%0.0%
Immortal increfs148,459,0537.5%148,463,9347.7%0.0%
Frees89,701,81489,702,7150.0%
Allocations from freelist18,582,96017.2%18,583,14017.2%0.0%
Frees to freelist18,587,20018,587,3800.0%
Mortal increfs135,700,3276.9%135,701,4467.1%0.0%
Allocations89,708,60082.8%89,709,04082.8%0.0%
Allocations to 512 bytes89,350,20082.5%89,350,30082.5%0.0%
Inline values307,200307,2000.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pidigits-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pidigits-vs-base.md new file mode 100644 index 00000000..1c7c8c3e --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pidigits-vs-base.md @@ -0,0 +1,1604 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD690,720640-99.9%
COMPARE_OP_INT690,840720-99.9%
CALL_BUILTIN_FAST530,780560-99.9%
POP_JUMP_IF_FALSE690,880760-99.9%
LOAD_GLOBAL_BUILTIN530,900680-99.9%
BINARY_OP1,382,9202,540-99.8%
CALL_PY_EXACT_ARGS2,072,4204,860-99.8%
LOAD_GLOBAL_MODULE2,072,6605,100-99.8%
NOP160,080460-99.7%
UNPACK_SEQUENCE_TUPLE2,763,1407,980-99.7%
STORE_FAST_STORE_FAST5,526,40016,080-99.7%
STORE_FAST1,382,0804,640-99.7%
LOAD_FAST_LOAD_FAST7,598,80025,680-99.7%
BINARY_OP_MULTIPLY_INT8,820,1601,089,660-87.6%
LOAD_FAST10,733,4401,615,700-84.9%
BINARY_OP_ADD_INT5,897,0601,074,340-81.8%
RETURN_VALUE2,603,440535,880-79.4%
RESUME_CHECK2,763,280695,720-74.8%
BUILD_TUPLE1,381,600536,620-61.2%
LOAD_CONST4,675,9202,666,440-43.0%
INTERPRETER_EXIT690,880690,8800.0%
POP_TOP160,160160,1600.0%
YIELD_VALUE160,000160,0000.0%
CALL6406400.0%
LOAD_GLOBAL5605600.0%
PUSH_NULL4004000.0%
CALL_NON_PY_GENERAL3603600.0%
LOAD_DEREF1601600.0%
RESUME1601600.0%
UNPACK_SEQUENCE1201200.0%
CALL_BUILTIN_CLASS1201200.0%
LOAD_ATTR_MODULE1201200.0%
MAKE_FUNCTION80800.0%
RETURN_GENERATOR80800.0%
CALL_FUNCTION_EX80800.0%
COMPARE_OP80800.0%
COPY_FREE_VARS80800.0%
LOAD_ATTR80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
ENTER_EXECUTOR161,120
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,382,0008.6%2,0400.1%-99.9%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
14,717,28091.4%2,164,06099.9%-85.3%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure52056.5%10020.0%-80.8%
Success40043.5%40080.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
floor divide520100.0%100100.0%-80.8%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,603,320100.0%5,54089.6%-99.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3200.0%3205.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success320100.0%320100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
690,840100.0%72090.0%-99.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.0%405.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4020.0%4020.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
12060.0%12060.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,603,560100.0%5,78091.2%-99.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2800.0%2804.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success280100.0%280100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,763,140100.0%7,98098.5%-99.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
600.0%600.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success60100.0%60100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
1,384,4002.2%4,0200.0%-99.7%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
26,141,90040.9%2,880,28030.4%-89.0%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
36,455,44057.0%6,576,10069.5%-82.0%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
00.0%00.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
BINARY_OP1,382,00099.9%2,04073.4%-99.9%
CALL3200.0%32011.5%0.0%
LOAD_GLOBAL2800.0%28010.1%0.0%
UNPACK_SEQUENCE600.0%602.2%0.0%
COMPARE_OP400.0%401.4%0.0%
LOAD_ATTR400.0%401.4%0.0%
BINARY_SLICE00.0%00.0%
STORE_SLICE00.0%00.0%
CACHE00.0%00.0%
BINARY_SUBSCR00.0%00.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault690,88025.0%690,88025.0%0.0%
Calls to Python functions inlined2,072,64075.0%2,072,64075.0%0.0%
Calls via PyEval_EvalFrame (total)690,88025.0%690,88025.0%0.0%
Calls via PyEval_EvalFrame (vector)530,88019.2%530,88019.2%0.0%
Calls via PyEval_EvalFrame (generator)160,0005.8%160,0005.8%0.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)530,88019.2%530,88019.2%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)800.0%800.0%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed2,603,52094.2%2,603,52094.2%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache collisions506224.0%
Interpreter immortal increfs15,852,44025.1%14,000,34022.7%-11.7%
Method cache hits2018-10.0%
Method cache misses202210.0%
Method cache dunder hits39402.6%
Method cache dunder misses4140-2.4%
Interpreter mortal increfs32,236,60051.1%32,698,68053.0%1.4%
Interpreter mortal decrefs40,354,26056.9%40,816,36057.1%1.1%
Interpreter immortal decrefs19,530,52027.5%19,691,68027.5%0.8%
Mortal increfs102,0210.2%102,3200.2%0.3%
Immortal decrefs2,797,8803.9%2,798,1043.9%0.0%
Mortal decrefs8,222,84211.6%8,223,10011.5%0.0%
Immortal increfs14,857,36123.6%14,857,66424.1%0.0%
Allocations to 4 kbytes3,817,12023.5%3,817,18023.5%0.0%
Allocations14,856,64091.5%14,856,72091.5%0.0%
Allocations over 4 kbytes6,310,48038.9%6,310,50038.9%0.0%
Frees14,856,54114,856,540-0.0%
Allocations from freelist1,382,0008.5%1,382,0008.5%0.0%
Frees to freelist1,382,0201,382,0200.0%
Allocations to 512 bytes4,729,04029.1%4,729,04029.1%0.0%
Inline values00
Materialize dict (on request)00
Materialize dict (new key)00
Materialize dict (too big)00
Materialize dict (str subclass)00
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pprint-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pprint-vs-base.md new file mode 100644 index 00000000..66a33e40 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pprint-vs-base.md @@ -0,0 +1,3600 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD264,068,94014,880-100.0%
CONVERT_VALUE96,006,6209,060-100.0%
DELETE_SUBSCR96,000,5809,300-100.0%
FOR_ITER_LIST161,146,46015,820-100.0%
CALL_TYPE_1312,002,12033,540-100.0%
LOAD_ATTR_METHOD_WITH_VALUES640,006,76071,620-100.0%
CONTAINS_OP_SET312,006,82037,420-100.0%
FORMAT_SIMPLE96,013,66011,980-100.0%
FOR_ITER_TUPLE193,157,66024,220-100.0%
LOAD_ATTR_CLASS288,000,66039,240-100.0%
CALL_PY_EXACT_ARGS640,026,10089,520-100.0%
CALL_BUILTIN_FAST872,014,400124,740-100.0%
BUILD_STRING48,011,6407,340-100.0%
CALL_KW_NON_PY24,000,4003,800-100.0%
IS_OP288,012,98048,760-100.0%
BINARY_OP96,032,58017,520-100.0%
CALL_METHOD_DESCRIPTOR_NOARGS32,003,4605,900-100.0%
UNPACK_SEQUENCE_TWO_TUPLE48,015,74010,000-100.0%
COPY96,018,60024,080-100.0%
EXTENDED_ARG120,015,62030,620-100.0%
LOAD_ATTR_METHOD_NO_DICT128,040,90036,060-100.0%
TO_BOOL_NONE96,002,38028,100-100.0%
BINARY_OP_ADD_INT96,004,46029,120-100.0%
CONTAINS_OP_DICT104,005,74031,760-100.0%
JUMP_FORWARD48,006,48015,780-100.0%
TO_BOOL72,022,14024,040-100.0%
TO_BOOL_LIST24,002,3008,200-100.0%
STORE_SUBSCR_DICT96,010,64033,380-100.0%
BUILD_LIST96,010,20033,860-100.0%
GET_ITER96,012,42035,600-100.0%
LOAD_ATTR96,048,78045,840-100.0%
LOAD_GLOBAL_BUILTIN2,448,068,3808,411,500-99.7%
POP_JUMP_IF_FALSE1,744,087,18016,329,020-99.1%
LOAD_ATTR_INSTANCE_VALUE240,043,5008,059,500-96.6%
LOAD_CONST1,808,186,98096,438,980-94.7%
LOAD_FAST_LOAD_FAST1,544,053,70096,221,320-93.8%
CALL_METHOD_DESCRIPTOR_O104,013,9408,018,100-92.3%
FOR_ITER_RANGE6,620560-91.5%
LOAD_FAST5,624,384,340616,984,200-89.0%
STORE_FAST2,496,128,860318,434,620-87.2%
BUILD_TUPLE360,010,94048,052,620-86.7%
STORE_FAST_STORE_FAST56,011,0408,009,220-85.7%
CALL_LEN56,015,0208,029,640-85.7%
TO_BOOL_BOOL1,440,066,320212,206,800-85.3%
CALL_BUILTIN_O584,007,42098,089,980-83.2%
LIST_APPEND15,8003,200-79.7%
RESUME_CHECK808,063,140168,123,060-79.2%
LOAD_GLOBAL_MODULE432,095,04096,112,760-77.8%
STORE_SUBSCR_LIST_INT5,0601,200-76.3%
STORE_FAST_LOAD_FAST10,2602,660-74.1%
POP_TOP376,052,400114,093,500-69.7%
FOR_ITER37,64011,700-68.9%
POP_JUMP_IF_TRUE648,054,120204,104,060-68.5%
CALL_BUILTIN_FAST_WITH_KEYWORDS26,1008,780-66.4%
UNPACK_SEQUENCE_TUPLE312,000,960106,028,260-66.0%
TO_BOOL_STR8,9603,240-63.8%
PUSH_NULL264,029,24098,047,720-62.9%
COMPARE_OP_INT80,016,12032,030,480-60.0%
RETURN_VALUE704,036,540292,089,660-58.5%
LOAD_NAME73,36030,840-58.0%
LOAD_FAST_AND_CLEAR3,7401,680-55.1%
CALL_METHOD_DESCRIPTOR_FAST20,44010,140-50.4%
COMPARE_OP_FLOAT520260-50.0%
LOAD_ATTR_MODULE45,24025,880-42.8%
CONTAINS_OP5,0003,420-31.6%
BINARY_OP_ADD_UNICODE10,3807,240-30.3%
SWAP23,10016,360-29.2%
BINARY_SUBSCR_STR_INT4,9403,520-28.7%
CALL_PY_GENERAL7,1805,120-28.7%
BINARY_SLICE1,5201,100-27.6%
CALL_BOUND_METHOD_EXACT_ARGS6,2804,680-25.5%
NOP32,022,92024,016,900-25.0%
MAP_ADD9,0606,940-23.4%
POP_JUMP_IF_NOT_NONE17,92013,840-22.8%
STORE_NAME39,44030,480-22.7%
LOAD_SPECIAL5,6804,400-22.5%
COMPARE_OP_STR12,2609,580-21.9%
BINARY_SUBSCR_GETITEM1,7601,380-21.6%
CALL_BUILTIN_CLASS2,9202,500-14.4%
BINARY_SUBSCR_DICT3,6603,140-14.2%
CALL_ISINSTANCE12,58010,960-12.9%
STORE_ATTR9,1208,020-12.1%
TO_BOOL_INT4,2403,800-10.4%
STORE_ATTR_INSTANCE_VALUE16,94015,540-8.3%
BINARY_SUBSCR7,1206,680-6.2%
CALL_LIST_APPEND3,4803,440-1.1%
POP_JUMP_IF_NONE7,9807,920-0.8%
LOAD_DEREF11,50011,420-0.7%
BINARY_OP_SUBTRACT_INT16,003,50016,002,980-0.0%
CALL_NON_PY_GENERAL96,017,82096,015,580-0.0%
RETURN_CONST104,028,880104,027,280-0.0%
LOAD_ATTR_SLOT48,005,90048,005,580-0.0%
BINARY_SUBSCR_TUPLE_INT96,004,68096,004,420-0.0%
INTERPRETER_EXIT168,014,940168,014,9400.0%
STORE_ATTR_SLOT96,001,00096,001,0000.0%
LOAD_ATTR_METHOD_LAZY_DICT8,000,4208,000,4200.0%
MAKE_FUNCTION14,98014,9800.0%
CALL10,10010,1000.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK8,6208,6200.0%
BUILD_MAP7,6807,6800.0%
COPY_FREE_VARS6,1006,1000.0%
SET_FUNCTION_ATTRIBUTE5,1805,1800.0%
LOAD_SUPER_ATTR_METHOD4,5604,5600.0%
MAKE_CELL4,2804,2800.0%
LOAD_GLOBAL4,1004,1000.0%
CALL_FUNCTION_EX4,0404,0400.0%
STORE_DEREF3,1003,1000.0%
BINARY_SUBSCR_LIST_INT3,0403,0400.0%
CALL_KW_PY2,8602,8600.0%
COMPARE_OP2,6002,6000.0%
EXIT_INIT_CHECK2,3602,3600.0%
CALL_ALLOC_AND_ENTER_INIT2,3602,3600.0%
RESUME2,1202,1200.0%
CHECK_EXC_MATCH1,9401,9400.0%
POP_EXCEPT1,9401,9400.0%
PUSH_EXC_INFO1,9401,9400.0%
IMPORT_NAME1,8801,8800.0%
YIELD_VALUE1,8001,8000.0%
LIST_EXTEND1,7801,7800.0%
STORE_SUBSCR1,6001,6000.0%
LOAD_ATTR_PROPERTY1,4401,4400.0%
DICT_MERGE1,4001,4000.0%
IMPORT_FROM1,3201,3200.0%
LOAD_FAST_CHECK1,3201,3200.0%
CALL_INTRINSIC_11,2601,2600.0%
JUMP_BACKWARD_NO_INTERRUPT1,2601,2600.0%
LOAD_BUILD_CLASS1,0401,0400.0%
RERAISE1,0001,0000.0%
CALL_STR_11,0001,0000.0%
RETURN_GENERATOR7607600.0%
LOAD_LOCALS6806800.0%
UNPACK_SEQUENCE6006000.0%
CALL_TUPLE_15605600.0%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS4004000.0%
BINARY_OP_MULTIPLY_INT3603600.0%
DELETE_NAME3403400.0%
DICT_UPDATE3003000.0%
BINARY_OP_INPLACE_ADD_UNICODE2802800.0%
BUILD_SET2802800.0%
UNARY_NOT2402400.0%
CALL_KW1401400.0%
BINARY_OP_SUBTRACT_FLOAT1201200.0%
FOR_ITER_GEN1201200.0%
LOAD_ATTR_NONDESCRIPTOR_NO_DICT1201200.0%
LOAD_SUPER_ATTR_ATTR1201200.0%
UNARY_INVERT60600.0%
UNARY_NEGATIVE60600.0%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES60600.0%
STORE_GLOBAL40400.0%
STORE_SLICE20200.0%
END_FOR20200.0%
ENTER_EXECUTOR106,057,260
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
96,007,46046.1%16,1800.1%-100.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
112,019,10053.8%16,040,10099.9%-85.7%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure24,50097.5%72053.7%-97.1%
Success6202.5%62046.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
remainder24,22098.9%44061.1%-98.2%
or1000.4%10013.9%0.0%
and int800.3%8011.1%0.0%
power600.2%608.3%0.0%
add other200.1%202.8%0.0%
multiply different types200.1%202.8%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,520100.0%1,100100.0%-27.6%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6,9600.0%6,5200.0%-6.3%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
96,017,660100.0%96,015,080100.0%-0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
4200.0%4200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success16088.9%16088.9%0.0%
Failure2011.1%2011.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
out of range20100.0%20100.0%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,600,160,040100.0%114,435,400100.0%-95.6%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
4,8200.0%4,8800.0%1.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
7,6800.0%7,6800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success2,520100.0%2,540100.0%0.8%
Failure00.0%00.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
init not inline values8080 / 0 !!8080 / 0 !!0.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
10071.4%10071.4%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
80,028,840100.0%32,040,260100.0%-60.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,3600.0%2,3600.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
600.0%600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success22091.7%22091.7%0.0%
Failure208.3%208.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
list20100.0%20100.0%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
416,012,560100.0%69,18095.3%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4,7600.0%3,1804.4%-33.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success14058.3%14058.3%0.0%
Failure10041.7%10041.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple4040.0%4040.0%0.0%
other2020.0%2020.0%0.0%
str2020.0%2020.0%0.0%
list2020.0%2020.0%0.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
120,133,58033.9%7,56014.4%-100.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
234,177,28066.1%33,16063.3%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
35,7600.0%10,34019.7%-71.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success2,266,86099.9%38025.3%-100.0%
Failure1,6400.1%1,12074.7%-31.7%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
dict values84051.2%48042.9%-42.9%
dict items48029.3%34030.4%-29.2%
itertools18011.0%16014.3%-11.1%
set1207.3%12010.7%0.0%
enumerate201.2%
seq iter201.8%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
96,022,5806.6%43,3600.1%-100.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,352,143,04093.4%64,237,96099.9%-95.2%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
200.0%200.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
10,5800.0%10,5800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure24,54093.0%82030.6%-96.7%
Success1,8607.0%1,86069.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
method24,28098.9%56068.3%-97.7%
metaclass attribute800.3%809.8%0.0%
expected error400.2%404.9%0.0%
non overriding descriptor400.2%404.9%0.0%
not managed dict400.2%404.9%0.0%
overridden200.1%202.4%0.0%
overriding descriptor200.1%202.4%0.0%
class method obj200.1%202.4%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,880,139,120100.0%104,499,960100.0%-96.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,1000.0%2,1000.0%0.0%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
6200.0%6200.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
24,3000.0%24,3000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success2,500100.0%2,500100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_SUPER_ATTR + +
+ specialization stats for LOAD_SUPER_ATTR family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
4,680100.0%4,680100.0%0.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
8,3600.0%7,2600.0%-13.2%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
96,017,460100.0%96,016,060100.0%-0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
4800.0%4800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success809.8%809.8%0.0%
Failure74090.2%74090.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
split dict34045.9%34045.9%0.0%
overridden26035.1%26035.1%0.0%
no dict608.1%608.1%0.0%
overriding descriptor405.4%405.4%0.0%
not managed dict405.4%405.4%0.0%
+ + +
+ +### STORE_SLICE + +
+ specialization stats for STORE_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
20100.0%20100.0%0.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
96,015,700100.0%34,58095.6%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,3000.0%1,3003.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success28093.3%28093.3%0.0%
Failure206.7%206.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
py simple20100.0%20100.0%0.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
72,002,5804.4%22,3400.0%-100.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,560,083,74095.6%212,249,680100.0%-86.4%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
4600.0%4600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure18,42094.2%56032.9%-97.0%
Success1,1405.8%1,14067.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple12,16066.0%34060.7%-97.2%
dict6,24033.9%20035.7%-96.8%
set200.1%203.6%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
360,016,700100.0%106,038,260100.0%-70.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3000.0%3000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success300100.0%300100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
120,174,7000.4%48,9000.0%-100.0%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
264,183,0600.9%137,4800.0%-99.9%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
10,810,921,04038.0%1,105,860,58032.4%-89.8%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
17,273,570,16060.7%2,311,364,80067.6%-86.6%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
BINARY_OP96,007,46036.4%16,18013.0%-100.0%
TO_BOOL72,002,58027.3%22,34018.0%-100.0%
LOAD_ATTR96,022,58036.4%43,36034.9%-100.0%
FOR_ITER35,7600.0%10,3408.3%-71.1%
CONTAINS_OP4,7600.0%3,1802.6%-33.2%
STORE_ATTR8,3600.0%7,2605.8%-13.2%
BINARY_SUBSCR6,9600.0%6,5205.3%-6.3%
CALL7,6800.0%7,6806.2%0.0%
COMPARE_OP2,3600.0%2,3601.9%0.0%
LOAD_GLOBAL2,1000.0%2,1001.7%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
FOR_ITER_LIST60,066,60050.0%3,2606.6%-100.0%
FOR_ITER_TUPLE60,066,98050.0%4,3008.8%-100.0%
LOAD_GLOBAL_BUILTIN13,7200.0%13,72028.0%0.0%
LOAD_GLOBAL_MODULE10,5800.0%10,58021.6%0.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK8,1200.0%8,12016.6%0.0%
CALL_BUILTIN_O1,4400.0%1,4402.9%0.0%
LOAD_ATTR_MODULE1,3400.0%1,3402.7%0.0%
LOAD_ATTR_INSTANCE_VALUE9400.0%9401.9%0.0%
CALL_BOUND_METHOD_EXACT_ARGS8800.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS8000.0%8001.6%0.0%
CALL_PY_EXACT_ARGS9201.9%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault168,015,28020.8%168,015,28020.8%0.0%
Calls to Python functions inlined640,050,74079.2%640,050,74079.2%0.0%
Calls via PyEval_EvalFrame (total)168,015,28020.8%168,015,28020.8%0.0%
Calls via PyEval_EvalFrame (vector)168,012,84020.8%168,012,84020.8%0.0%
Calls via PyEval_EvalFrame (generator)2,4400.0%2,4400.0%0.0%
Calls via PyEval_EvalFrame (legacy)5000.0%5000.0%0.0%
Calls via PyEval_EvalFrame (function vectorcall)168,011,30020.8%168,011,30020.8%0.0%
Calls via PyEval_EvalFrame (build class)1,0400.0%1,0400.0%0.0%
Calls via PyEval_EvalFrame (slot)24,005,8003.0%24,005,8003.0%0.0%
Calls via PyEval_EvalFrame (function ex)6200.0%6200.0%0.0%
Calls via PyEval_EvalFrame (api)48,001,4805.9%48,001,4805.9%0.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created2,5000.0%2,5000.0%0.0%
Frames pushed808,065,820100.0%808,065,820100.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Allocations over 4 kbytes1,3800.0%1,9200.0%39.1%
Interpreter immortal increfs8,994,484,66041.4%6,376,845,36032.5%-29.1%
Allocations to 4 kbytes15,0800.0%16,7000.0%10.7%
Interpreter mortal increfs8,831,696,32040.7%9,442,726,50048.2%6.9%
Method cache collisions20,34419,242-5.4%
Interpreter mortal decrefs10,130,204,46046.6%10,642,964,24047.3%5.1%
Immortal increfs1,511,552,3897.0%1,457,570,6947.4%-3.6%
Interpreter immortal decrefs7,304,528,64033.6%7,482,565,80033.3%2.4%
Mortal decrefs2,880,081,14513.2%2,945,293,02113.1%2.3%
Mortal increfs2,362,410,65510.9%2,329,340,38111.9%-1.4%
Method cache misses22,38922,261-0.6%
Method cache dunder misses5,3725,370-0.0%
Method cache hits120,075,371120,051,779-0.0%
Frees to freelist728,106,620728,112,9200.0%
Allocations from freelist728,110,02039.7%728,116,32039.7%0.0%
Immortal decrefs1,424,827,2216.6%1,424,836,7276.3%0.0%
Frees1,224,305,9101,224,311,5180.0%
Allocations1,104,509,16060.3%1,104,511,40060.3%0.0%
Allocations to 512 bytes1,104,492,70060.3%1,104,492,78060.3%0.0%
Method cache dunder hits744,087,188744,087,1900.0%
Inline values4,4804,4800.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1404,320939,600404,320931,120
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
40400.0%
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
04040 / 0 !!
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
04040 / 0 !!
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files40400.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pycparser-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pycparser-vs-base.md new file mode 100644 index 00000000..d5fc692d --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pycparser-vs-base.md @@ -0,0 +1,3535 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD95,248,46053,660-99.9%
BINARY_SUBSCR_STR_INT23,502,12048,020-99.8%
STORE_FAST_STORE_FAST36,909,66077,500-99.8%
UNPACK_SEQUENCE_TWO_TUPLE49,432,900143,120-99.7%
LOAD_FAST_AND_CLEAR1,672,1005,020-99.7%
CONTAINS_OP_DICT46,487,800141,480-99.7%
STORE_FAST_LOAD_FAST14,110,16071,160-99.5%
TO_BOOL_STR5,533,66035,360-99.4%
FOR_ITER_LIST43,553,520361,300-99.2%
STORE_NAME532,5804,540-99.1%
LIST_APPEND980,40013,380-98.6%
LOAD_NAME1,611,22026,020-98.4%
TO_BOOL4,173,82078,220-98.1%
LOAD_ATTR12,630,220248,860-98.0%
BINARY_OP_ADD_INT12,866,420318,780-97.5%
TO_BOOL_LIST11,727,120515,060-95.6%
TO_BOOL_NONE47,412,9202,113,200-95.5%
BINARY_OP_ADD_UNICODE1,113,90052,820-95.3%
CALL_METHOD_DESCRIPTOR_NOARGS131,1607,260-94.5%
SWAP16,277,0601,154,560-92.9%
CONTAINS_OP25,900,6201,884,680-92.7%
EXTENDED_ARG145,734,36010,786,160-92.6%
CALL_ISINSTANCE54,570,9404,708,840-91.4%
NOP81,910,0807,426,400-90.9%
POP_JUMP_IF_TRUE136,463,32017,013,700-87.5%
CALL_NON_PY_GENERAL102,167,30012,827,460-87.4%
FOR_ITER_RANGE51,9807,120-86.3%
TO_BOOL_BOOL65,798,12010,727,960-83.7%
POP_JUMP_IF_FALSE354,245,30059,100,600-83.3%
TO_BOOL_ALWAYS_TRUE63,567,00010,884,700-82.9%
STORE_SUBSCR_LIST_INT34,917,3006,880,100-80.3%
BINARY_SLICE34,927,4406,884,880-80.3%
GET_ITER19,023,2603,872,180-79.6%
COMPARE_OP_INT170,308,86034,856,720-79.5%
TO_BOOL_INT46,115,24010,467,320-77.3%
BINARY_OP_INPLACE_ADD_UNICODE16,8004,000-76.2%
POP_JUMP_IF_NONE46,933,52011,276,820-76.0%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS19,2804,700-75.6%
STORE_FAST514,521,260147,393,180-71.4%
BINARY_OP_SUBTRACT_INT40,206,50012,161,520-69.8%
STORE_ATTR_INSTANCE_VALUE272,294,04082,900,380-69.6%
CALL_BOUND_METHOD_EXACT_ARGS37,608,76012,203,340-67.6%
CALL_METHOD_DESCRIPTOR_FAST79,276,82025,999,340-67.2%
PUSH_NULL28,259,3209,296,160-67.1%
LOAD_GLOBAL_BUILTIN146,233,14049,007,120-66.5%
LOAD_ATTR_INSTANCE_VALUE476,169,680167,588,200-64.8%
LOAD_GLOBAL_MODULE72,206,06025,789,320-64.3%
FOR_ITER9,632,1603,517,020-63.5%
LOAD_FAST2,469,856,820926,411,420-62.5%
JUMP_FORWARD57,286,48021,927,700-61.7%
UNARY_NEGATIVE140,390,34055,986,520-60.1%
LOAD_FAST_LOAD_FAST216,305,34087,682,440-59.5%
BINARY_OP1,799,940734,540-59.2%
BINARY_SUBSCR_LIST_INT151,176,92063,122,540-58.2%
LOAD_ATTR_METHOD_NO_DICT222,620,620105,000,140-52.8%
FOR_ITER_TUPLE41,96020,900-50.2%
CALL_BUILTIN_FAST_WITH_KEYWORDS29,12014,840-49.0%
LOAD_ATTR_SLOT11,966,5806,154,220-48.6%
LOAD_CONST601,403,280317,660,720-47.2%
POP_JUMP_IF_NOT_NONE9,607,4205,272,560-45.1%
BUILD_SLICE69,798,72041,765,720-40.2%
DELETE_SUBSCR69,798,76041,765,760-40.2%
COPY3,514,2002,159,340-38.6%
RESUME_CHECK211,706,460136,747,640-35.4%
STORE_SUBSCR_DICT783,520509,320-35.0%
BUILD_TUPLE1,613,9401,074,900-33.4%
IS_OP118,04080,600-31.7%
BINARY_SUBSCR_TUPLE_INT338,760235,240-30.6%
LOAD_ATTR_MODULE18,293,54012,704,160-30.6%
BINARY_SUBSCR_DICT127,069,64088,369,640-30.5%
LOAD_FAST_CHECK18,72013,020-30.4%
CONTAINS_OP_SET50,26035,140-30.1%
LOAD_ATTR_METHOD_WITH_VALUES37,838,48027,357,020-27.7%
POP_TOP56,040,96042,570,920-24.0%
UNARY_NOT12,82010,100-21.2%
CALL_LIST_APPEND94,016,38078,698,220-16.3%
UNARY_INVERT4,1603,580-13.9%
CALL_BUILTIN_O98,72085,800-13.1%
CALL_ALLOC_AND_ENTER_INIT11,88010,340-13.0%
BUILD_LIST9,226,8208,092,140-12.3%
CALL_KW_NON_PY10,652,1209,491,540-10.9%
MAKE_FUNCTION5,1604,600-10.9%
BUILD_MAP141,280128,260-9.2%
CALL_TUPLE_12,8202,600-7.8%
UNPACK_SEQUENCE_TUPLE8,5607,980-6.8%
BINARY_OP_MULTIPLY_INT10,80010,220-5.4%
STORE_ATTR_SLOT48,112,10045,547,200-5.3%
CALL_PY_EXACT_ARGS64,091,52061,140,320-4.6%
CALL_BUILTIN_CLASS3,394,8003,243,820-4.4%
BINARY_SUBSCR_GETITEM47,371,18045,303,280-4.4%
COMPARE_OP_STR4,504,0004,363,940-3.1%
CALL_PY_GENERAL898,280871,660-3.0%
CALL_METHOD_DESCRIPTOR_O242,500236,740-2.4%
RETURN_CONST92,703,60090,962,160-1.9%
CALL_LEN22,241,26021,908,320-1.5%
BINARY_SUBSCR37,324,08036,960,320-1.0%
STORE_SUBSCR35,760,90035,435,820-0.9%
CALL_BUILTIN_FAST16,481,54016,339,560-0.9%
RETURN_VALUE119,010,100118,772,460-0.2%
INTERPRETER_EXIT61,268,68061,268,6800.0%
LOAD_DEREF1,456,1601,456,1600.0%
COPY_FREE_VARS1,455,8401,455,8400.0%
CALL_KW_PY1,139,9601,139,9600.0%
COMPARE_OP554,260554,2600.0%
FORMAT_SIMPLE87,84087,8400.0%
CONVERT_VALUE87,84087,8400.0%
CALL_FUNCTION_EX74,92074,9200.0%
LOAD_ATTR_PROPERTY49,34049,3400.0%
BUILD_STRING43,92043,9200.0%
CALL_STR_140,66040,6600.0%
STORE_ATTR15,64015,6400.0%
CALL15,12015,1200.0%
EXIT_INIT_CHECK11,68011,6800.0%
LOAD_GLOBAL10,68010,6800.0%
LIST_EXTEND7,2207,2200.0%
RESUME5,5805,5800.0%
MAP_ADD3,4003,4000.0%
CALL_TYPE_12,2802,2800.0%
CALL_KW2,0002,0000.0%
LOAD_SPECIAL1,2001,2000.0%
STORE_GLOBAL9609600.0%
UNPACK_SEQUENCE6406400.0%
IMPORT_NAME4804800.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK4804800.0%
CHECK_EXC_MATCH4004000.0%
POP_EXCEPT4004000.0%
PUSH_EXC_INFO4004000.0%
DICT_MERGE3603600.0%
YIELD_VALUE3203200.0%
LOAD_ATTR_CLASS2402400.0%
DICT_UPDATE2002000.0%
RETURN_GENERATOR1601600.0%
CALL_INTRINSIC_11201200.0%
SET_FUNCTION_ATTRIBUTE1201200.0%
JUMP_BACKWARD_NO_INTERRUPT80800.0%
MAKE_CELL80800.0%
LOAD_SUPER_ATTR_METHOD80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
DELETE_NAME40400.0%
COMPARE_OP_FLOAT40400.0%
LOAD_ATTR_METHOD_LAZY_DICT40400.0%
ENTER_EXECUTOR93,465,420
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
54,214,48096.8%12,547,40094.5%-76.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,797,3603.2%732,2605.5%-59.3%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure2,32089.9%2,02088.6%-12.9%
Success26010.1%26011.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
multiply different types64027.6%32015.8%-50.0%
and int40017.2%42020.8%5.0%
add other90038.8%90044.6%0.0%
remainder24010.3%24011.9%0.0%
or1205.2%1205.9%0.0%
add different types200.9%201.0%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
34,927,440100.0%6,884,880100.0%-80.3%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
349,448,58090.3%197,068,68084.2%-43.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
37,305,4209.6%36,941,92015.8%-1.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
10,0400.0%10,0400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure11,96063.5%11,70063.0%-2.2%
Success6,88036.5%6,88037.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
list slice1801.5%1201.0%-33.3%
string slice9007.5%8006.8%-11.1%
out of range10,82090.5%10,72091.6%-0.9%
buffer slice400.3%400.3%0.0%
other200.2%200.2%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
370,638,40090.4%198,884,42085.6%-46.3%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
39,230,8009.6%33,571,34014.4%-14.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
7,5600.0%7,5600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success748,720100.0%641,920100.0%-14.3%
Failure00.0%00.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
init not inline values960960 / 0 !!960960 / 0 !!0.0%
init not python8080 / 0 !!8080 / 0 !!0.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,00050.0%1,00050.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
174,812,74099.7%39,220,54098.6%-77.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
552,4800.3%552,4801.4%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1600.0%1600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,32074.2%1,32074.2%0.0%
Failure46025.8%46025.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
list34073.9%34073.9%0.0%
other8017.4%8017.4%0.0%
different types204.3%204.3%0.0%
tuple204.3%204.3%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
46,538,06064.2%176,6208.6%-99.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
25,892,38035.7%1,882,36091.3%-92.7%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure8,02097.3%2,10090.5%-73.8%
Success2202.7%2209.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
str6,16076.8%40019.0%-93.5%
tuple1,12014.0%96045.7%-14.3%
list7409.2%74035.2%0.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
43,646,40081.9%388,4009.9%-99.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
9,626,98018.1%3,514,00090.0%-63.5%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1,0600.0%9200.0%-13.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure4,68090.0%2,54083.6%-45.7%
Success52010.0%50016.4%-3.8%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
zip4209.0%1606.3%-61.9%
reversed list2,08044.4%90035.4%-56.7%
ascii string52011.1%32012.6%-38.5%
dict keys2605.6%1606.3%-38.5%
dict items86018.4%56022.0%-34.9%
enumerate1803.8%1204.7%-33.3%
seq iter2004.3%1606.3%-20.0%
dict values1603.4%1606.3%0.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
12,613,7401.6%235,5200.1%-98.1%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
740,965,88095.0%305,464,70095.7%-58.8%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
25,973,1203.3%13,389,1404.2%-48.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure5,5601.1%2,4200.9%-56.5%
Success500,16098.9%262,74099.1%-47.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
overriding descriptor3,30059.4%32013.2%-90.3%
builtin class method400.7%200.8%-50.0%
module attr not found66011.9%60024.8%-9.1%
overridden68012.2%62025.6%-8.8%
non object slot3205.8%30012.4%-6.2%
method4608.3%46019.0%0.0%
not managed dict601.1%602.5%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
218,412,640100.0%74,769,880100.0%-65.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5,2800.0%5,2800.0%0.0%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
800.0%800.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
26,5600.0%26,5600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success5,800100.0%5,800100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_SUPER_ATTR + +
+ specialization stats for LOAD_SUPER_ATTR family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
80100.0%80100.0%0.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
308,987,24096.4%117,297,80091.3%-62.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
11,418,9003.6%11,149,7808.7%-2.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
9,5400.0%9,5400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success221,26099.9%216,20099.9%-2.3%
Failure1200.1%1200.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
overriding descriptor120100.0%120100.0%0.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
35,700,82050.0%7,389,42017.3%-79.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
35,731,08050.0%35,406,04082.7%-0.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure29,42098.7%29,38098.7%-0.1%
Success4001.3%4001.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
bytearray int400.1%600.2%50.0%
py simple29,36099.8%29,30099.7%-0.2%
out of range200.1%200.1%0.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
39,750,34020.0%349,9401.5%-99.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4,004,7802.0%71,5800.3%-98.2%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
154,371,48077.8%23,585,86098.2%-84.7%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success751,72081.8%8,36063.4%-98.9%
Failure167,24018.2%4,82036.6%-97.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other162,10096.9%3206.6%-99.8%
tuple1,4600.9%82017.0%-43.8%
dict3,5802.1%3,58074.3%0.0%
mapping1000.1%1002.1%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
49,441,460100.0%151,10099.6%-99.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3200.0%3200.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success320100.0%320100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
2,882,164,82033.4%1,141,019,96032.8%-60.4%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
5,475,797,42063.4%2,187,889,78063.0%-60.0%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
116,412,0201.3%58,500,1001.7%-49.7%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
162,747,5201.9%86,342,6802.5%-46.9%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
TO_BOOL4,004,7802.5%71,5800.1%-98.2%
LOAD_ATTR12,613,7407.8%235,5200.3%-98.1%
CONTAINS_OP25,892,38015.9%1,882,3602.2%-92.7%
BINARY_SLICE34,927,44021.5%6,884,8808.0%-80.3%
FOR_ITER9,626,9805.9%3,514,0004.1%-63.5%
BINARY_OP1,797,3601.1%732,2600.8%-59.3%
BINARY_SUBSCR37,305,42023.0%36,941,92042.8%-1.0%
STORE_SUBSCR35,731,08022.0%35,406,04041.1%-0.9%
COMPARE_OP552,4800.3%552,4800.6%0.0%
STORE_ATTR9,5400.0%9,5400.0%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
TO_BOOL_ALWAYS_TRUE17,534,76015.1%76,9000.1%-99.6%
TO_BOOL_NONE22,207,08019.1%264,3600.5%-98.8%
CALL_BOUND_METHOD_EXACT_ARGS19,117,16016.4%7,667,98013.1%-59.9%
STORE_ATTR_SLOT510,0200.4%240,9000.4%-52.8%
LOAD_ATTR_INSTANCE_VALUE22,727,72019.5%11,563,82019.8%-49.1%
LOAD_ATTR_SLOT2,970,9002.6%1,550,8202.7%-47.8%
CALL_PY_EXACT_ARGS20,110,24017.3%25,899,96044.3%28.8%
STORE_ATTR_INSTANCE_VALUE10,908,8809.4%10,908,88018.6%0.0%
LOAD_ATTR_METHOD_WITH_VALUES274,0600.2%274,0600.5%0.0%
LOAD_GLOBAL_BUILTIN15,6400.0%15,6400.0%0.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault61,278,38028.9%61,278,38028.9%0.0%
Calls to Python functions inlined150,433,82071.1%150,433,82071.1%0.0%
Calls via PyEval_EvalFrame (total)61,278,38028.9%61,278,38028.9%0.0%
Calls via PyEval_EvalFrame (vector)61,277,90028.9%61,277,90028.9%0.0%
Calls via PyEval_EvalFrame (generator)4800.0%4800.0%0.0%
Calls via PyEval_EvalFrame (legacy)5200.0%5200.0%0.0%
Calls via PyEval_EvalFrame (function vectorcall)61,277,38028.9%61,277,38028.9%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)46,518,46022.0%46,518,46022.0%0.0%
Calls via PyEval_EvalFrame (function ex)4400.0%4400.0%0.0%
Calls via PyEval_EvalFrame (api)98,5400.0%98,5400.0%0.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created20,2800.0%20,2800.0%0.0%
Frames pushed211,723,400100.0%211,723,400100.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache dunder misses325,540172,444-47.0%
Method cache collisions739,258460,125-37.8%
Method cache misses430,864305,128-29.2%
Method cache hits65,970,49654,116,672-18.0%
Interpreter immortal increfs1,685,087,94023.9%1,387,265,64019.7%-17.7%
Interpreter mortal increfs3,794,610,42053.8%4,125,901,36058.5%8.7%
Interpreter mortal decrefs4,127,094,30054.6%4,445,656,38055.6%7.7%
Interpreter immortal decrefs1,730,875,04022.9%1,847,847,24023.1%6.8%
Allocations over 4 kbytes3,8200.0%3,9600.0%3.7%
Immortal increfs842,838,86312.0%828,391,33811.7%-1.7%
Mortal increfs726,821,40510.3%715,970,25910.1%-1.5%
Immortal decrefs1,000,060,08013.2%987,533,96412.4%-1.3%
Mortal decrefs707,276,6089.3%709,174,0068.9%0.3%
Method cache dunder hits118,352,000118,505,0360.1%
Allocations to 4 kbytes36,662,9608.7%36,676,8208.7%0.0%
Frees273,125,875273,144,1240.0%
Allocations240,151,56056.7%240,167,26056.7%0.0%
Allocations from freelist183,180,32043.3%183,184,40043.3%0.0%
Frees to freelist183,203,680183,207,7600.0%
Allocations to 512 bytes203,484,78048.1%203,486,48048.1%0.0%
Inline values48,028,94048,028,9400.0%
Materialize dict (on request)4800.0%4800.0%0.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
18,92011,860,900330,845,5208,92011,861,560330,844,760
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
0240240 / 0 !!
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
0240240 / 0 !!
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pyflate-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pyflate-vs-base.md new file mode 100644 index 00000000..70f23bf4 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pyflate-vs-base.md @@ -0,0 +1,2633 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
STORE_SUBSCR_LIST_INT53,789,400720-100.0%
JUMP_BACKWARD155,443,5209,600-100.0%
FOR_ITER26,922,8201,720-100.0%
UNPACK_SEQUENCE_TWO_TUPLE26,987,0803,160-100.0%
NOP11,873,5202,020-100.0%
FOR_ITER_LIST70,902,94013,980-100.0%
BINARY_SUBSCR77,376,30020,920-100.0%
STORE_FAST_STORE_FAST27,057,3608,220-100.0%
FOR_ITER_RANGE27,862,4809,440-100.0%
CALL_LEN53,965,44053,320-99.9%
GET_ITER12,005,36019,860-99.8%
LOAD_GLOBAL_BUILTIN60,217,040116,900-99.8%
LOAD_ATTR_METHOD_LAZY_DICT5,405,06041,340-99.2%
CALL_METHOD_DESCRIPTOR_FAST5,425,46041,640-99.2%
TO_BOOL5,406,90041,880-99.2%
CALL_BUILTIN_O6,088,52047,740-99.2%
CALL_ALLOC_AND_ENTER_INIT71,1201,200-98.3%
STORE_ATTR_INSTANCE_VALUE47,124,7002,887,720-93.9%
LOAD_FAST_LOAD_FAST290,971,60021,250,260-92.7%
POP_JUMP_IF_TRUE76,601,5205,597,420-92.7%
LOAD_ATTR_INSTANCE_VALUE427,170,24031,853,640-92.5%
TO_BOOL_BOOL141,400,24010,657,400-92.5%
LOAD_ATTR_METHOD_WITH_VALUES120,340,2809,298,080-92.3%
CALL_BUILTIN_CLASS162,18014,940-90.8%
UNARY_INVERT12,536,6401,308,240-89.6%
SWAP149,833,84015,827,640-89.4%
COPY137,972,16014,655,800-89.4%
BINARY_SUBSCR_LIST_INT91,356,38010,169,780-88.9%
CALL_PY_EXACT_ARGS127,835,90016,679,620-87.0%
RESUME_CHECK127,978,10016,756,860-86.9%
POP_JUMP_IF_FALSE393,424,64055,422,980-85.9%
BINARY_OP_ADD_INT139,886,86019,870,040-85.8%
COMPARE_OP_INT322,501,40049,826,680-84.5%
STORE_FAST300,528,64046,464,840-84.5%
LOAD_FAST1,330,635,120210,832,140-84.2%
JUMP_FORWARD28,778,8004,696,220-83.7%
LOAD_ATTR_METHOD_NO_DICT61,365,80010,180,180-83.4%
CALL_LIST_APPEND61,344,70010,248,960-83.3%
CALL_BUILTIN_FAST32,0405,860-81.7%
BINARY_OP_SUBTRACT_INT162,623,62037,532,100-76.9%
POP_TOP65,376,66015,190,400-76.8%
RETURN_VALUE109,745,68027,082,960-75.3%
BINARY_OP193,957,68050,892,680-73.8%
LOAD_CONST419,360,080123,965,340-70.4%
BINARY_SLICE47,117,36022,160,320-53.0%
LIST_APPEND11,6005,520-52.4%
TO_BOOL_INT718,340493,860-31.2%
BUILD_LIST92,64065,060-29.8%
RETURN_CONST18,304,08012,891,020-29.6%
BINARY_OP_MULTIPLY_INT44,94038,660-14.0%
LOAD_GLOBAL_MODULE7,599,6207,389,440-2.8%
STORE_SUBSCR7,426,3207,376,980-0.7%
EXIT_INIT_CHECK71,12071,1200.0%
BUILD_TUPLE71,04071,0400.0%
INTERPRETER_EXIT70,64070,6400.0%
LOAD_ATTR4,2204,2200.0%
CALL4,1204,1200.0%
LOAD_GLOBAL2,3602,3600.0%
COMPARE_OP1,7001,7000.0%
STORE_ATTR1,0001,0000.0%
CALL_NON_PY_GENERAL7607600.0%
RESUME5405400.0%
PUSH_NULL4804800.0%
CALL_KW_NON_PY4604600.0%
LOAD_ATTR_CLASS4604600.0%
LOAD_DEREF2402400.0%
UNPACK_SEQUENCE2402400.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS2402400.0%
LOAD_ATTR_MODULE2402400.0%
CALL_FUNCTION_EX1601600.0%
LOAD_FAST_AND_CLEAR1601600.0%
CALL_ISINSTANCE1401400.0%
CALL_METHOD_DESCRIPTOR_NOARGS1201200.0%
CALL_METHOD_DESCRIPTOR_O1201200.0%
CALL_INTRINSIC_180800.0%
COPY_FREE_VARS80800.0%
LIST_EXTEND80800.0%
LOAD_FAST_CHECK80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
COMPARE_OP_STR60600.0%
CALL_KW40400.0%
ENTER_EXECUTOR16,919,440
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
302,555,48060.9%57,440,86053.0%-81.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
193,903,80039.1%50,874,52047.0%-73.8%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure53,12098.6%17,40095.8%-67.2%
Success7601.4%7604.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
and int14,42027.1%3,08017.7%-78.6%
rshift10,98020.7%2,50014.4%-77.2%
lshift21,36040.2%6,02034.6%-71.8%
or6001.1%2801.6%-53.3%
multiply different types1,2602.4%1,0406.0%-17.5%
add other4,5008.5%4,48025.7%-0.4%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
47,117,360100.0%22,160,320100.0%-53.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
77,356,18045.8%20,1600.2%-100.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
91,356,38054.1%10,169,78099.8%-88.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure19,94099.1%58076.3%-97.1%
Success1800.9%18023.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
buffer int19,88099.7%52089.7%-97.4%
list slice600.3%6010.3%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
254,925,980100.0%27,093,900100.0%-89.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,0600.0%2,0600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success2,080100.0%2,080100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2050.0%2050.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
322,501,460100.0%49,826,740100.0%-84.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
9400.0%9400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success70092.1%70092.1%0.0%
Failure607.9%607.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
big int60100.0%60100.0%0.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
26,915,62021.4%1,3205.3%-100.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
98,765,42078.6%23,42093.2%-100.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure6,94096.4%14035.0%-98.0%
Success2603.6%26065.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
enumerate6,940100.0%140100.0%-98.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
614,282,080100.0%51,373,940100.0%-91.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,3200.0%2,3200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,84096.8%1,84096.8%0.0%
Failure603.2%603.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
non overriding descriptor60100.0%60100.0%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
67,816,660100.0%7,506,340100.0%-88.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,1800.0%1,1800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,180100.0%1,180100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
47,124,700100.0%2,887,720100.0%-93.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5000.0%5000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success500100.0%500100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
53,789,40087.9%7200.0%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
7,424,28012.1%7,374,940100.0%-0.7%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success402.0%402.0%0.0%
Failure2,00098.0%2,00098.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
list slice2,000100.0%2,000100.0%0.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5,405,1803.7%41,4600.4%-99.2%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
142,118,58096.3%11,151,26099.6%-92.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,50087.2%20047.6%-86.7%
Success22012.8%22052.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
bytes1,500100.0%200100.0%-86.7%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
26,987,080100.0%3,16092.9%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1200.0%1203.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success120100.0%120100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
2,150,202,54035.5%234,235,74026.4%-89.1%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
3,540,768,16058.5%572,429,68064.5%-83.8%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
358,221,0605.9%80,508,1809.1%-77.5%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
00.0%1800.0%180 / 0 !!
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
FOR_ITER26,915,6207.5%1,3200.0%-100.0%
BINARY_SUBSCR77,356,18021.6%20,1600.0%-100.0%
TO_BOOL5,405,1801.5%41,4600.1%-99.2%
BINARY_OP193,903,80054.1%50,874,52063.2%-73.8%
BINARY_SLICE47,117,36013.2%22,160,32027.5%-53.0%
STORE_SUBSCR7,424,2802.1%7,374,9409.2%-0.7%
LOAD_ATTR2,3200.0%2,3200.0%0.0%
CALL2,0600.0%2,0600.0%0.0%
LOAD_GLOBAL1,1800.0%1,1800.0%0.0%
COMPARE_OP9400.0%9400.0%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
RESUME18050.0%
RESUME_CHECK18050.0%
CACHE00.0%
EXIT_INIT_CHECK00.0%
GET_ITER00.0%
INTERPRETER_EXIT00.0%
NOP00.0%
POP_TOP00.0%
PUSH_NULL00.0%
RETURN_VALUE00.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault70,6400.1%70,6400.1%0.0%
Calls to Python functions inlined127,908,00099.9%127,908,00099.9%0.0%
Calls via PyEval_EvalFrame (total)70,6400.1%70,6400.1%0.0%
Calls via PyEval_EvalFrame (vector)70,6400.1%70,6400.1%0.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)70,6400.1%70,6400.1%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)1600.0%1600.0%0.0%
Calls via PyEval_EvalFrame (api)70,5600.1%70,5600.1%0.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed128,049,760100.1%128,049,760100.1%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache dunder hits20,6211,258-93.9%
Method cache collisions612462-24.5%
Interpreter immortal increfs1,631,518,94022.0%1,330,289,88018.4%-18.5%
Allocations over 4 kbytes1,7600.0%2,0000.0%13.6%
Interpreter mortal increfs1,883,361,06025.4%2,013,397,46027.8%6.9%
Interpreter mortal decrefs2,167,433,52027.4%2,297,469,02028.6%6.0%
Method cache misses683649-5.0%
Method cache dunder misses2192221.4%
Interpreter immortal decrefs1,862,697,34023.6%1,879,618,72023.4%0.9%
Method cache hits8,0778,1110.4%
Allocations to 4 kbytes21,664,5605.3%21,668,5005.3%0.0%
Allocations from freelist84,471,98020.7%84,474,16020.7%0.0%
Frees to freelist84,476,98084,479,1600.0%
Mortal decrefs262,298,2073.3%262,304,9483.3%0.0%
Frees322,896,927322,903,3170.0%
Allocations322,900,88079.3%322,905,28079.3%0.0%
Mortal increfs183,285,8682.5%183,283,5092.5%-0.0%
Immortal increfs3,702,824,83650.0%3,702,844,89451.2%0.0%
Immortal decrefs3,603,539,83745.6%3,603,555,47644.8%0.0%
Allocations to 512 bytes301,234,56073.9%301,234,78073.9%0.0%
Inline values71,20071,2000.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pylint-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pylint-vs-base.md new file mode 100644 index 00000000..50b2fe6f --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-pylint-vs-base.md @@ -0,0 +1,4457 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
UNPACK_SEQUENCE1,556,42011,905-99.2%
JUMP_BACKWARD63,591,6281,046,953-98.4%
UNPACK_SEQUENCE_TWO_TUPLE29,395,0991,979,645-93.3%
STORE_FAST_STORE_FAST31,135,7592,103,306-93.2%
FOR_ITER_LIST47,492,5886,670,303-86.0%
CALL_NON_PY_GENERAL25,437,0324,044,489-84.1%
POP_JUMP_IF_NONE34,206,0405,688,112-83.4%
CALL_INTRINSIC_1464,500824,36077.5%
FOR_ITER_TUPLE9,646,5002,313,439-76.0%
BINARY_OP_SUBTRACT_INT2,929,360736,260-74.9%
PUSH_NULL38,201,7809,629,601-74.8%
CALL_BUILTIN_FAST_WITH_KEYWORDS1,809,640456,380-74.8%
CALL_TUPLE_1487,420124,520-74.5%
JUMP_BACKWARD_NO_INTERRUPT4,996,2001,355,754-72.9%
STORE_SUBSCR_LIST_INT1,484,840407,980-72.5%
FOR_ITER8,299,1202,402,746-71.0%
BINARY_SUBSCR_GETITEM177,85654,171-69.5%
TO_BOOL_ALWAYS_TRUE11,856,2003,712,406-68.7%
FOR_ITER_RANGE520,220173,380-66.7%
BINARY_OP_ADD_INT4,263,4801,448,796-66.0%
DELETE_SUBSCR188,08065,060-65.4%
BINARY_SUBSCR5,064,2801,850,881-63.5%
BINARY_SUBSCR_TUPLE_INT2,665,7201,011,355-62.1%
BINARY_SUBSCR_LIST_INT7,510,5562,917,720-61.2%
BINARY_OP2,235,360871,820-61.0%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES7,925,9603,357,979-57.6%
CONTAINS_OP5,680,9352,536,834-55.3%
COMPARE_OP_INT11,202,9275,011,573-55.3%
BINARY_OP_ADD_UNICODE1,154,300518,300-55.1%
FOR_ITER_GEN15,380,4606,965,472-54.7%
POP_JUMP_IF_TRUE54,896,50225,632,703-53.3%
STORE_FAST_LOAD_FAST3,152,3401,523,920-51.7%
SWAP13,875,0206,917,250-50.1%
TO_BOOL_INT1,210,860609,720-49.6%
LOAD_FAST_AND_CLEAR4,507,7602,316,154-48.6%
STORE_SUBSCR254,020130,620-48.6%
BINARY_SUBSCR_STR_INT749,980391,896-47.7%
EXTENDED_ARG9,796,4605,149,000-47.4%
CALL_BUILTIN_FAST8,367,8404,476,149-46.5%
MAKE_CELL9,247,4404,948,960-46.5%
BINARY_SLICE724,060407,660-43.7%
LOAD_SPECIAL572,080326,960-42.8%
STORE_FAST102,492,29661,981,636-39.5%
CONTAINS_OP_DICT4,752,7802,894,294-39.1%
LOAD_GLOBAL_BUILTIN75,909,75546,788,701-38.4%
LOAD_FAST513,635,900321,023,373-37.5%
TO_BOOL_BOOL98,260,73661,791,812-37.1%
JUMP_FORWARD5,344,0603,366,244-37.0%
LOAD_DEREF17,742,32011,398,019-35.8%
IS_OP5,156,3873,391,632-34.2%
RERAISE1,085,0201,447,24033.4%
CALL_LEN2,811,3231,876,474-33.3%
LOAD_ATTR_WITH_HINT29,373,05219,835,485-32.5%
CALL_ISINSTANCE39,978,59627,388,408-31.5%
UNPACK_SEQUENCE_LIST6,6404,560-31.3%
POP_JUMP_IF_FALSE115,896,85880,202,499-30.8%
LOAD_ATTR_SLOT15,058,78010,426,456-30.8%
TO_BOOL_NONE5,771,3724,008,643-30.5%
CALL_BOUND_METHOD_EXACT_ARGS5,420,8203,797,482-29.9%
UNPACK_SEQUENCE_TUPLE156,540109,861-29.8%
TO_BOOL_LIST3,974,0002,813,240-29.2%
GET_ITER24,519,36017,509,176-28.6%
LOAD_GLOBAL_MODULE75,693,82754,640,676-27.8%
CONTAINS_OP_SET3,953,3402,874,407-27.3%
BUILD_LIST9,740,8207,105,399-27.1%
LOAD_ATTR_MODULE35,267,14026,006,223-26.3%
LOAD_ATTR_METHOD_WITH_VALUES50,210,92037,127,962-26.1%
RESUME_CHECK129,781,27296,146,101-25.9%
LOAD_FAST_LOAD_FAST83,654,51962,313,618-25.5%
MAP_ADD12,4209,300-25.1%
TO_BOOL_STR2,359,7401,787,760-24.2%
SET_ADD46,50035,980-22.6%
CALL_PY_GENERAL7,799,1806,039,572-22.6%
LOAD_ATTR_INSTANCE_VALUE89,086,23269,232,371-22.3%
BINARY_SUBSCR_DICT8,746,3206,816,266-22.1%
CALL_METHOD_DESCRIPTOR_FAST8,685,8206,826,053-21.4%
CALL_LIST_APPEND2,500,6071,997,016-20.1%
CALL_PY_EXACT_ARGS58,765,36047,080,985-19.9%
POP_JUMP_IF_NOT_NONE19,568,68915,700,068-19.8%
LOAD_CONST94,119,91176,845,850-18.4%
BUILD_TUPLE10,830,7078,873,229-18.1%
UNARY_INVERT4,1003,380-17.6%
LOAD_FAST_CHECK467,400388,100-17.0%
LOAD_ATTR_METHOD_NO_DICT17,500,23914,798,629-15.4%
LIST_EXTEND166,980141,240-15.4%
CALL_BUILTIN_O2,972,4802,546,140-14.3%
LIST_APPEND3,955,4603,390,994-14.3%
LOAD_ATTR_PROPERTY4,680,0004,017,594-14.2%
LOAD_NAME77,16066,760-13.5%
SEND_GEN6,894,1206,001,474-12.9%
COPY_FREE_VARS7,305,5006,528,640-10.6%
COMPARE_OP_STR32,828,66029,355,436-10.6%
DELETE_ATTR372,560334,460-10.2%
STORE_ATTR3,575,9603,212,655-10.2%
LOAD_ATTR32,418,24029,356,261-9.4%
NOP35,726,88032,404,917-9.3%
CALL_KW_NON_PY3,721,5203,379,908-9.2%
TO_BOOL1,010,829919,680-9.0%
CALL_METHOD_DESCRIPTOR_O1,387,0001,273,120-8.2%
SET_FUNCTION_ATTRIBUTE2,430,2802,237,560-7.9%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS615,580569,180-7.5%
POP_TOP65,659,46061,209,584-6.8%
MAKE_FUNCTION2,840,6202,654,140-6.6%
STORE_ATTR_INSTANCE_VALUE35,680,28033,452,401-6.2%
GET_YIELD_FROM_ITER10,806,98010,162,584-6.0%
CALL_BUILTIN_CLASS3,429,3003,225,280-5.9%
CALL_KW_PY6,475,1006,116,280-5.5%
BINARY_OP_INPLACE_ADD_UNICODE93,20088,780-4.7%
COMPARE_OP5,535,1095,299,140-4.3%
CALL_METHOD_DESCRIPTOR_NOARGS3,001,3202,913,880-2.9%
CALL_TYPE_11,481,2601,443,300-2.6%
DICT_MERGE1,809,9601,763,921-2.5%
COPY27,074,44026,394,206-2.5%
STORE_SUBSCR_DICT2,859,7602,795,780-2.2%
BUILD_MAP5,613,4805,492,042-2.2%
BUILD_STRING1,616,9001,588,980-1.7%
FORMAT_SIMPLE3,104,0203,058,360-1.5%
CALL_BOUND_METHOD_GENERAL83,96085,1491.4%
STORE_NAME198,360195,760-1.3%
UNARY_NOT347,100342,600-1.3%
LOAD_ATTR_CLASS4,933,1404,879,201-1.1%
CALL_ALLOC_AND_ENTER_INIT1,019,3401,008,960-1.0%
RETURN_GENERATOR15,670,26015,519,920-1.0%
RETURN_VALUE74,540,21273,893,933-0.9%
IMPORT_NAME542,300537,990-0.8%
IMPORT_FROM543,440539,130-0.8%
CALL_KW_BOUND_METHOD763,020759,180-0.5%
STORE_DEREF660,580658,160-0.4%
POP_EXCEPT1,362,3801,359,820-0.2%
RETURN_CONST39,385,86039,338,180-0.1%
END_FOR6,286,4206,289,9000.1%
INTERPRETER_EXIT37,150,77637,145,531-0.0%
EXIT_INIT_CHECK1,014,3601,014,5000.0%
STORE_ATTR_SLOT10,442,34010,441,240-0.0%
YIELD_VALUE16,544,92016,544,9200.0%
END_SEND10,646,22010,646,2200.0%
SEND8,528,2808,528,2800.0%
LOAD_SUPER_ATTR_METHOD3,544,8003,544,8000.0%
CALL_FUNCTION_EX1,874,8201,874,8200.0%
CHECK_EXC_MATCH1,519,7601,519,7600.0%
PUSH_EXC_INFO1,362,3801,362,3800.0%
BUILD_SET572,460572,4600.0%
LOAD_ATTR_NONDESCRIPTOR_NO_DICT454,620454,6200.0%
RAISE_VARARGS271,000271,0000.0%
LOAD_SUPER_ATTR_ATTR266,280266,2800.0%
CALL240,940240,9400.0%
LOAD_GLOBAL199,520199,5200.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK154,520154,5200.0%
CLEANUP_THROW148,940148,9400.0%
CONVERT_VALUE105,520105,5200.0%
LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN94,68094,6800.0%
SET_UPDATE91,34091,3400.0%
CALL_STR_190,00090,0000.0%
DELETE_FAST69,60069,6000.0%
RESUME60,52060,5200.0%
UNARY_NEGATIVE25,82025,8200.0%
STORE_ATTR_WITH_HINT23,26023,2600.0%
CALL_KW20,70020,7000.0%
BINARY_OP_MULTIPLY_INT13,64013,6400.0%
LOAD_ATTR_METHOD_LAZY_DICT13,54013,5400.0%
LOAD_BUILD_CLASS10,72010,7200.0%
COMPARE_OP_FLOAT6,9806,9800.0%
WITH_EXCEPT_START5,9405,9400.0%
LOAD_LOCALS4,5804,5800.0%
LOAD_SUPER_ATTR4,2204,2200.0%
SETUP_ANNOTATIONS1,1001,1000.0%
DICT_UPDATE7407400.0%
STORE_SLICE5805800.0%
STORE_GLOBAL3203200.0%
FORMAT_WITH_SPEC2402400.0%
DELETE_NAME2002000.0%
BINARY_OP_SUBTRACT_FLOAT1201200.0%
BINARY_OP_ADD_FLOAT60600.0%
ENTER_EXECUTOR44,555,897
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
8,454,16079.1%2,805,95676.3%-66.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,222,20020.8%859,44023.4%-61.3%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure9,92075.4%9,14073.8%-7.9%
Success3,24024.6%3,24026.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
floor divide800.8%400.4%-50.0%
add different types9209.3%6206.8%-32.6%
remainder8008.1%7007.7%-12.5%
multiply different types6606.7%5806.3%-12.1%
and int1,58015.9%1,40015.3%-11.4%
add other3,50035.3%3,42037.4%-2.3%
or9209.3%92010.1%0.0%
xor4004.0%4004.4%0.0%
and other3403.4%3403.7%0.0%
true divide different types2602.6%2602.8%0.0%
lshift2002.0%2002.2%0.0%
subtract other1201.2%1201.3%0.0%
rshift600.6%600.7%0.0%
and different types400.4%400.4%0.0%
power200.2%200.2%0.0%
true divide other200.2%200.2%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
724,060100.0%407,660100.0%-43.7%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
228,3000.9%45,3400.3%-80.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5,036,90020.2%1,827,96114.0%-63.7%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
19,622,13278.8%11,146,06885.5%-43.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success13,22041.8%9,74041.1%-26.3%
Failure18,38058.2%13,96058.9%-24.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
out of range6,72036.6%3,64026.1%-45.8%
other3,32018.1%2,72019.5%-18.1%
buffer int2,18011.9%1,92013.8%-11.9%
string slice2,82015.3%2,54018.2%-9.9%
list slice2,92015.9%2,72019.5%-6.8%
code complex parameters2601.4%2601.9%0.0%
tuple slice1200.7%1200.9%0.0%
buffer slice200.1%200.1%0.0%
sequence int200.1%200.1%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
133,283,76688.3%96,606,69587.3%-27.5%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
17,386,66011.5%13,830,26712.5%-20.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
139,9800.1%139,9800.1%0.0%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
10,2600.0%10,2600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success451,940100.0%383,802100.0%-15.1%
Failure00.0%00.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
init not simple480480 / 0 !!480480 / 0 !!0.0%
init not inline values300300 / 0 !!300300 / 0 !!0.0%
init not python2020 / 0 !!2020 / 0 !!0.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
802,34097.5%747,38097.3%-6.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
10,8801.3%10,8801.4%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
28,6800.1%12,3000.0%-57.1%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
44,009,88788.8%34,361,68986.6%-21.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5,512,52911.1%5,276,92013.3%-4.3%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure11,14048.2%10,78048.0%-3.2%
Success11,98051.8%11,68052.0%-2.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
different types3,72033.4%3,46032.1%-7.0%
baseobject4,42039.7%4,32040.1%-2.3%
list9608.6%9608.9%0.0%
other7606.8%7607.1%0.0%
big int3403.1%3403.2%0.0%
tuple3403.1%3403.2%0.0%
bool2202.0%2202.0%0.0%
set2001.8%2001.9%0.0%
string1601.4%1601.5%0.0%
float long200.2%200.2%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5,657,62039.3%2,514,69430.3%-55.6%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
8,672,90060.3%5,735,48169.1%-33.9%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
33,2200.2%33,2200.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure19,15580.0%17,98079.0%-6.1%
Success4,78020.0%4,78021.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other2,46012.8%2,24012.5%-8.9%
str4,22022.0%3,96022.0%-6.2%
tuple8,77545.8%8,28046.1%-5.6%
list3,70019.3%3,50019.5%-5.4%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
72,745,44889.4%15,965,27486.2%-78.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
8,262,40010.2%2,373,90112.8%-71.3%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
294,3200.4%157,3200.8%-46.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure23,62055.9%15,76549.7%-33.3%
Success18,60044.1%15,96050.3%-14.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
set7,24030.7%3,38021.4%-53.3%
enumerate5,00021.2%3,10519.7%-37.9%
other6402.7%4002.5%-37.5%
bytes2200.9%1400.9%-36.4%
map2200.9%1400.9%-36.4%
dict values9003.8%7004.4%-22.2%
ascii string1000.4%1200.8%20.0%
dict items4,94020.9%4,00025.4%-19.0%
reversed list5202.2%4402.8%-15.4%
itertools1,9808.4%1,68010.7%-15.2%
dict keys7203.0%6203.9%-13.9%
zip1,1204.7%1,0206.5%-8.9%
seq iter200.1%200.1%0.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
62,094,06221.6%36,619,78616.7%-41.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
192,658,76167.1%153,779,47470.0%-20.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
32,004,24011.1%28,960,46113.2%-9.5%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
422,9200.1%422,9200.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,493,04095.0%995,82092.8%-33.3%
Failure78,4205.0%76,8007.2%-2.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
class method obj1,8202.3%1,6402.1%-9.9%
module attr not found1,4401.8%1,3401.7%-6.9%
metaclass attribute4,6205.9%4,3805.7%-5.2%
not managed dict4000.5%3800.5%-5.0%
overriding descriptor15,84020.2%15,24019.8%-3.8%
method4,2405.4%4,1605.4%-1.9%
class attr simple21,02026.8%20,76027.0%-1.2%
non overriding descriptor2,0002.6%1,9802.6%-1.0%
mutable class19,78025.2%19,66025.6%-0.6%
wrong number arguments1,1001.4%1,1001.4%0.0%
overridden9801.2%9801.3%0.0%
builtin class method9001.1%9001.2%0.0%
expected error2000.3%2000.3%0.0%
not in dict400.1%400.1%0.0%
non object slot200.0%200.0%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
151,518,86299.8%101,344,65799.7%-33.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
102,2600.1%102,2600.1%0.0%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
1,4800.0%1,4800.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
84,7200.1%84,7200.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success98,120100.0%98,120100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_SUPER_ATTR + +
+ specialization stats for LOAD_SUPER_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,1400.1%2,1400.1%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
3,811,08099.9%3,811,08099.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success2,080100.0%2,080100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### SEND + +
+ specialization stats for SEND family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6,894,12044.7%6,001,47441.3%-12.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
8,518,18055.2%8,518,18058.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success8808.7%8808.7%0.0%
Failure9,22091.3%9,22091.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
list6,76073.3%6,76073.3%0.0%
tuple2,24024.3%2,24024.3%0.0%
other2202.4%2202.4%0.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3,548,7007.1%3,185,6956.8%-10.2%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
31,005,70062.4%28,893,86161.3%-6.8%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
15,140,18030.4%15,023,04031.9%-0.8%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure14,2404.6%13,9404.5%-2.1%
Success298,04095.4%295,84095.5%-0.7%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
overriding descriptor2201.5%1801.3%-18.2%
class attr simple3,22022.6%3,00021.5%-6.8%
overridden1,42010.0%1,3609.8%-4.2%
not managed dict7,24050.8%7,26052.1%0.3%
property6004.2%6004.3%0.0%
not in keys5603.9%5604.0%0.0%
not in dict4202.9%4203.0%0.0%
split dict3202.2%3202.3%0.0%
no dict1601.1%1601.1%0.0%
method400.3%400.3%0.0%
mutable class400.3%400.3%0.0%
+ + +
+ +### STORE_SLICE + +
+ specialization stats for STORE_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
580100.0%580100.0%0.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
250,1405.4%126,8803.8%-49.3%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
4,344,60094.5%3,203,76096.1%-26.3%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,84047.4%1,70045.5%-7.6%
Success2,04052.6%2,04054.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
bytearray int40021.7%26015.3%-35.0%
dict subclass no override80043.5%80047.1%0.0%
list slice26014.1%26015.3%0.0%
out of range1407.6%1408.2%0.0%
other1206.5%1207.1%0.0%
py simple1206.5%1207.1%0.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
10,196,4408.4%2,738,1793.7%-73.1%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
109,790,04890.7%70,260,01595.1%-36.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
940,2890.8%849,8401.1%-9.6%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success237,56090.8%96,88080.6%-59.2%
Failure24,0409.2%23,34019.4%-2.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other1,5406.4%9003.9%-41.6%
number8803.7%8603.7%-2.3%
mapping1,3205.5%1,3005.6%-1.5%
dict1,4205.9%1,4006.0%-1.4%
set16,70069.5%16,70071.6%0.0%
tuple1,8607.7%1,8608.0%0.0%
bytes2000.8%2000.9%0.0%
sequence1200.5%1200.5%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,551,1205.0%7,3200.3%-99.5%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
29,558,27995.0%2,094,06699.4%-92.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,04019.6%3257.1%-68.8%
Success4,26080.4%4,26092.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
sequence96092.3%24575.4%-74.5%
iterator807.7%8024.6%0.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
106,292,6823.8%69,295,9573.6%-34.8%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
985,224,42734.9%650,210,19633.7%-34.0%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
1,652,728,72458.6%1,151,259,68559.8%-30.3%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
75,348,5732.7%55,994,4422.9%-25.7%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
FOR_ITER8,262,40011.1%2,373,9014.3%-71.3%
BINARY_SUBSCR5,036,9006.8%1,827,9613.3%-63.7%
BINARY_OP2,222,2003.0%859,4401.6%-61.3%
CONTAINS_OP5,657,6207.6%2,514,6944.6%-55.6%
STORE_ATTR3,548,7004.8%3,185,6955.8%-10.2%
TO_BOOL940,2891.3%849,8401.5%-9.6%
LOAD_ATTR32,004,24043.0%28,960,46152.5%-9.5%
COMPARE_OP5,512,5297.4%5,276,9209.6%-4.3%
SEND8,518,18011.4%8,518,18015.4%0.0%
UNPACK_SEQUENCE1,551,1202.1%
BINARY_SLICE407,6600.7%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
TO_BOOL_ALWAYS_TRUE8,409,7807.9%1,987,0192.9%-76.4%
LOAD_ATTR_SLOT4,183,3803.9%1,128,6321.6%-73.0%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES6,354,0406.0%2,422,5593.5%-61.9%
LOAD_ATTR_WITH_HINT11,617,16010.9%5,787,9238.4%-50.2%
LOAD_ATTR_INSTANCE_VALUE16,910,86015.9%9,608,44213.9%-43.2%
LOAD_ATTR_METHOD_WITH_VALUES22,898,86021.5%17,542,57825.3%-23.4%
CALL_BOUND_METHOD_EXACT_ARGS2,834,7202.7%2,196,0403.2%-22.5%
CALL_PY_EXACT_ARGS10,461,5409.8%10,148,39414.6%-3.0%
STORE_ATTR_INSTANCE_VALUE15,140,12014.2%15,022,98021.7%-0.8%
CALL_NON_PY_GENERAL2,714,6602.6%
CALL_KW_PY690,6401.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Frame objects created1,908,7801.3%2,512,6201.7%31.6%
Calls via PyEval_EvalFrame (generator)8,541,0605.9%8,898,0406.1%4.2%
Calls to PyEval_EvalDefault37,594,97625.8%37,951,83126.0%0.9%
Calls via PyEval_EvalFrame (total)37,594,97625.8%37,951,83126.0%0.9%
Calls to Python functions inlined108,274,13674.2%108,279,53174.0%0.0%
Calls via PyEval_EvalFrame (slot)781,8960.5%781,9110.5%0.0%
Calls via PyEval_EvalFrame (function vectorcall)29,039,51619.9%29,039,39119.9%-0.0%
Calls via PyEval_EvalFrame (vector)29,053,91619.9%29,053,79119.9%-0.0%
Frames pushed116,104,31279.6%116,104,48279.4%0.0%
Calls via PyEval_EvalFrame (legacy)3,6800.0%3,6800.0%0.0%
Calls via PyEval_EvalFrame (build class)10,7200.0%10,7200.0%0.0%
Calls via PyEval_EvalFrame (function ex)837,3000.6%837,3000.6%0.0%
Calls via PyEval_EvalFrame (api)5,081,6803.5%5,081,6803.5%0.0%
Calls via PyEval_EvalFrame (method)4800.0%4800.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache dunder misses1,784,823610,643-65.8%
Method cache collisions5,323,9974,105,571-22.9%
Allocations to 4 kbytes578,0400.3%682,9850.3%18.2%
Interpreter mortal increfs1,191,902,48844.4%1,367,129,66748.4%14.7%
Interpreter mortal decrefs1,381,416,97750.6%1,543,838,70152.4%11.8%
Interpreter immortal decrefs425,697,97815.6%471,764,70916.0%10.8%
Interpreter immortal increfs433,977,90916.2%401,951,39514.2%-7.4%
Mortal decrefs506,996,99918.6%518,518,42317.6%2.3%
Method cache hits130,034,834128,132,778-1.5%
Method cache misses3,568,0903,524,316-1.2%
Frees138,504,589140,113,5911.2%
Allocations151,159,92069.2%152,771,53269.4%1.1%
Allocations to 512 bytes150,330,34068.8%151,836,98769.0%1.0%
Mortal increfs540,478,79320.1%537,600,99519.0%-0.5%
Method cache dunder hits61,624,58961,926,4440.5%
Immortal decrefs415,272,35315.2%414,689,20214.1%-0.1%
Allocations over 4 kbytes251,5400.1%251,5600.1%0.0%
Immortal increfs518,327,81719.3%518,355,37518.3%0.0%
Allocations from freelist67,323,64730.8%67,325,33130.6%0.0%
Frees to freelist67,362,86767,364,5510.0%
Inline values4,338,1404,338,1400.0%
Materialize dict (on request)430,8009.9%430,8009.9%0.0%
Materialize dict (new key)39,4800.9%39,4800.9%0.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
15,34082,740485,450,7205,32080,660486,449,812
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
2402400.0%
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
2402400.0%
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
0320320 / 0 !!
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
0320320 / 0 !!
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-python_startup-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-python_startup-vs-base.md new file mode 100644 index 00000000..b36233a3 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-python_startup-vs-base.md @@ -0,0 +1,2754 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD2,6802,100-21.6%
FOR_ITER_TUPLE3,1002,460-20.6%
POP_TOP6,9207,3806.6%
CALL_LIST_APPEND1,2401,180-4.8%
UNPACK_SEQUENCE_TWO_TUPLE2,2602,200-2.7%
POP_JUMP_IF_TRUE4,8804,760-2.5%
CALL_BUILTIN_FAST2,9402,880-2.0%
COMPARE_OP_INT6,2806,160-1.9%
STORE_FAST17,02016,720-1.8%
LOAD_ATTR_METHOD_NO_DICT3,7603,700-1.6%
BUILD_TUPLE3,9603,900-1.5%
LOAD_GLOBAL_MODULE11,86011,740-1.0%
POP_JUMP_IF_NOT_NONE6,1606,100-1.0%
LOAD_ATTR_MODULE6,7006,640-0.9%
LOAD_GLOBAL_BUILTIN7,3207,260-0.8%
LOAD_CONST24,00023,820-0.8%
LOAD_FAST69,84069,420-0.6%
POP_JUMP_IF_FALSE14,10014,1000.0%
RESUME_CHECK9,3009,3000.0%
LOAD_FAST_LOAD_FAST8,8608,8600.0%
LOAD_ATTR_INSTANCE_VALUE8,1208,1200.0%
STORE_ATTR_INSTANCE_VALUE6,7406,7400.0%
TO_BOOL_BOOL6,1006,1000.0%
RETURN_VALUE4,9004,9000.0%
PUSH_NULL4,8404,8400.0%
RETURN_CONST4,6204,6200.0%
LOAD_ATTR4,2604,2600.0%
CALL_PY_EXACT_ARGS3,8803,8800.0%
INTERPRETER_EXIT2,9002,9000.0%
NOP2,8602,8600.0%
CALL2,7402,7400.0%
LOAD_GLOBAL2,7402,7400.0%
SWAP2,6602,6600.0%
LOAD_ATTR_METHOD_WITH_VALUES2,6002,6000.0%
TO_BOOL2,5002,5000.0%
CALL_NON_PY_GENERAL2,2202,2200.0%
LOAD_DEREF2,2002,2000.0%
POP_JUMP_IF_NONE2,2002,2000.0%
STORE_ATTR2,0602,0600.0%
COPY1,9801,9800.0%
CALL_PY_GENERAL1,8001,8000.0%
LOAD_SPECIAL1,7601,7600.0%
STORE_FAST_STORE_FAST1,7601,7600.0%
CALL_METHOD_DESCRIPTOR_FAST1,7201,7200.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS1,6801,6800.0%
BUILD_LIST1,5401,5400.0%
CALL_FUNCTION_EX1,5401,5400.0%
CALL_ISINSTANCE1,4601,4600.0%
COMPARE_OP1,3401,3400.0%
BUILD_MAP1,3201,3200.0%
DELETE_ATTR1,3201,3200.0%
BINARY_OP1,2601,2600.0%
GET_ITER1,1401,1400.0%
DICT_MERGE1,1001,1000.0%
JUMP_FORWARD1,1001,1000.0%
MAKE_CELL1,1001,1000.0%
TO_BOOL_NONE1,0001,0000.0%
TO_BOOL_STR8608600.0%
TO_BOOL_INT8008000.0%
BINARY_SLICE6606600.0%
COPY_FREE_VARS6606600.0%
RESUME6606600.0%
CALL_LEN6406400.0%
LOAD_ATTR_CLASS6206200.0%
BINARY_SUBSCR_LIST_INT6006000.0%
CALL_BUILTIN_CLASS6006000.0%
CALL_METHOD_DESCRIPTOR_O6006000.0%
STORE_SUBSCR_DICT6006000.0%
BINARY_SUBSCR4604600.0%
IS_OP4604600.0%
CHECK_EXC_MATCH4404400.0%
MAKE_FUNCTION4404400.0%
POP_EXCEPT4404400.0%
PUSH_EXC_INFO4404400.0%
RETURN_GENERATOR4404400.0%
EXTENDED_ARG4404400.0%
SET_FUNCTION_ATTRIBUTE4404400.0%
STORE_DEREF4404400.0%
YIELD_VALUE4404400.0%
BINARY_OP_ADD_INT4404400.0%
COMPARE_OP_STR4404400.0%
BINARY_SUBSCR_TUPLE_INT4004000.0%
CALL_KW_NON_PY4004000.0%
CALL_KW_PY4004000.0%
CALL_METHOD_DESCRIPTOR_NOARGS4004000.0%
LOAD_ATTR_METHOD_LAZY_DICT4004000.0%
LOAD_ATTR_SLOT4004000.0%
UNPACK_SEQUENCE3603600.0%
BINARY_OP_INPLACE_ADD_UNICODE2202200.0%
CALL_INTRINSIC_12202200.0%
LIST_EXTEND2202200.0%
BINARY_OP_ADD_UNICODE2202200.0%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS2002000.0%
CALL_STR_12002000.0%
CALL_TYPE_12002000.0%
FOR_ITER_LIST2002000.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK2002000.0%
TO_BOOL_ALWAYS_TRUE2002000.0%
TO_BOOL_LIST2002000.0%
UNPACK_SEQUENCE_TUPLE2002000.0%
CALL_KW1601600.0%
FOR_ITER1601600.0%
STORE_SUBSCR1201200.0%
CONTAINS_OP40400.0%
ENTER_EXECUTOR520
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,10051.4%1,10051.4%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
88041.1%88041.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success00.0%00.0%
Failure160100.0%160100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
add other12075.0%12075.0%0.0%
multiply different types4025.0%4025.0%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
660100.0%660100.0%0.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
32021.9%32021.9%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,00068.5%1,00068.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success10071.4%10071.4%0.0%
Failure4028.6%4028.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
list slice40100.0%40100.0%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
15,76085.2%15,64085.1%-0.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,3807.5%1,3807.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,440100.0%1,440100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
8050.0%8050.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6,72083.4%6,60083.1%-1.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
7609.4%7609.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success54093.1%54093.1%0.0%
Failure406.9%406.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
different types40100.0%40100.0%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
40100.0%40100.0%0.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
3,30095.4%2,66094.3%-19.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
802.3%802.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success80100.0%80100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
22,80084.3%22,68084.2%-0.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,3408.6%2,3408.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,84095.8%1,84095.8%0.0%
Failure804.2%804.2%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
17,98082.0%17,80081.9%-1.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,4006.4%1,4006.4%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1,2005.5%1,2005.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,380100.0%1,380100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,40015.9%1,40015.9%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6,74076.6%6,74076.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success52078.8%52078.8%0.0%
Failure14021.2%14021.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
class attr simple10071.4%10071.4%0.0%
not managed dict4028.6%4028.6%0.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
608.3%608.3%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
60083.3%60083.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success60100.0%60100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,62014.1%1,62014.1%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
8,96078.2%8,96078.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success74084.1%74084.1%0.0%
Failure14015.9%14015.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple8057.1%8057.1%0.0%
sequence6042.9%6042.9%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,46087.2%2,40087.0%-2.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1806.4%1806.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success180100.0%180100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
101,52030.9%100,28030.7%-1.2%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
207,44063.0%206,70063.2%-0.4%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
18,8605.7%18,8605.8%0.0%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
1,2000.4%1,2000.4%0.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
LOAD_ATTR2,34020.5%2,34020.5%0.0%
TO_BOOL1,62014.2%1,62014.2%0.0%
LOAD_GLOBAL1,40012.3%1,40012.3%0.0%
STORE_ATTR1,40012.3%1,40012.3%0.0%
CALL1,38012.1%1,38012.1%0.0%
BINARY_OP1,1009.6%1,1009.6%0.0%
COMPARE_OP7606.7%7606.7%0.0%
BINARY_SLICE6605.8%6605.8%0.0%
BINARY_SUBSCR3202.8%3202.8%0.0%
UNPACK_SEQUENCE1801.6%1801.6%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
LOAD_GLOBAL_BUILTIN1,200100.0%1,200100.0%0.0%
CACHE00.0%00.0%
BINARY_OP_INPLACE_ADD_UNICODE00.0%00.0%
CHECK_EXC_MATCH00.0%00.0%
GET_ITER00.0%00.0%
INTERPRETER_EXIT00.0%00.0%
MAKE_FUNCTION00.0%00.0%
NOP00.0%00.0%
POP_EXCEPT00.0%00.0%
POP_TOP00.0%00.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault2,90027.9%2,90027.9%0.0%
Calls to Python functions inlined7,50072.1%7,50072.1%0.0%
Calls via PyEval_EvalFrame (total)2,90027.9%2,90027.9%0.0%
Calls via PyEval_EvalFrame (vector)2,02019.4%2,02019.4%0.0%
Calls via PyEval_EvalFrame (generator)8808.5%8808.5%0.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)2,02019.4%2,02019.4%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)8808.5%8808.5%0.0%
Calls via PyEval_EvalFrame (api)4404.2%4404.2%0.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created4404.2%4404.2%0.0%
Frames pushed9,52091.5%9,52091.5%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache dunder misses866403-53.5%
Allocations to 4 kbytes2200.6%2800.8%27.3%
Method cache collisions2,3631,885-20.2%
Method cache dunder hits5,2145,6778.9%
Method cache misses2,1012,069-1.5%
Interpreter immortal decrefs71,86021.6%72,50021.8%0.9%
Immortal decrefs62,25618.7%61,85518.6%-0.6%
Immortal increfs57,64618.4%57,27618.3%-0.6%
Mortal increfs58,48818.7%58,12918.6%-0.6%
Interpreter mortal increfs108,94034.8%109,40035.0%0.4%
Allocations20,86056.1%20,92056.1%0.3%
Interpreter immortal increfs87,90028.1%87,66028.1%-0.3%
Method cache hits14,57914,6110.2%
Frees21,27221,244-0.1%
Interpreter mortal decrefs127,78038.4%127,84038.4%0.0%
Mortal decrefs70,47821.2%70,49121.2%0.0%
Allocations from freelist16,34043.9%16,34043.9%0.0%
Frees to freelist16,56016,5600.0%
Allocations to 512 bytes20,20054.3%20,20054.2%0.0%
Allocations over 4 kbytes4401.2%4401.2%0.0%
Inline values1,1001,1000.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-python_startup_no_site-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-python_startup_no_site-vs-base.md new file mode 100644 index 00000000..b348ce9a --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-python_startup_no_site-vs-base.md @@ -0,0 +1,2754 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD2,6802,100-21.6%
FOR_ITER_TUPLE3,1002,460-20.6%
POP_TOP6,9207,3806.6%
CALL_LIST_APPEND1,2401,180-4.8%
UNPACK_SEQUENCE_TWO_TUPLE2,2602,200-2.7%
POP_JUMP_IF_TRUE4,8804,760-2.5%
CALL_BUILTIN_FAST2,9402,880-2.0%
COMPARE_OP_INT6,2806,160-1.9%
STORE_FAST17,02016,720-1.8%
LOAD_ATTR_METHOD_NO_DICT3,7603,700-1.6%
BUILD_TUPLE3,9603,900-1.5%
LOAD_GLOBAL_MODULE11,86011,740-1.0%
POP_JUMP_IF_NOT_NONE6,1606,100-1.0%
LOAD_ATTR_MODULE6,7006,640-0.9%
LOAD_GLOBAL_BUILTIN7,3207,260-0.8%
LOAD_CONST24,00023,820-0.8%
LOAD_FAST69,84069,420-0.6%
POP_JUMP_IF_FALSE14,10014,1000.0%
RESUME_CHECK9,3009,3000.0%
LOAD_FAST_LOAD_FAST8,8608,8600.0%
LOAD_ATTR_INSTANCE_VALUE8,1208,1200.0%
STORE_ATTR_INSTANCE_VALUE6,7406,7400.0%
TO_BOOL_BOOL6,1006,1000.0%
RETURN_VALUE4,9004,9000.0%
PUSH_NULL4,8404,8400.0%
RETURN_CONST4,6204,6200.0%
LOAD_ATTR4,2604,2600.0%
CALL_PY_EXACT_ARGS3,8803,8800.0%
INTERPRETER_EXIT2,9002,9000.0%
NOP2,8602,8600.0%
CALL2,7402,7400.0%
LOAD_GLOBAL2,7402,7400.0%
SWAP2,6602,6600.0%
LOAD_ATTR_METHOD_WITH_VALUES2,6002,6000.0%
TO_BOOL2,5002,5000.0%
CALL_NON_PY_GENERAL2,2202,2200.0%
LOAD_DEREF2,2002,2000.0%
POP_JUMP_IF_NONE2,2002,2000.0%
STORE_ATTR2,0602,0600.0%
COPY1,9801,9800.0%
CALL_PY_GENERAL1,8001,8000.0%
LOAD_SPECIAL1,7601,7600.0%
STORE_FAST_STORE_FAST1,7601,7600.0%
CALL_METHOD_DESCRIPTOR_FAST1,7201,7200.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS1,6801,6800.0%
BUILD_LIST1,5401,5400.0%
CALL_FUNCTION_EX1,5401,5400.0%
CALL_ISINSTANCE1,4601,4600.0%
COMPARE_OP1,3401,3400.0%
BUILD_MAP1,3201,3200.0%
DELETE_ATTR1,3201,3200.0%
BINARY_OP1,2601,2600.0%
GET_ITER1,1401,1400.0%
DICT_MERGE1,1001,1000.0%
JUMP_FORWARD1,1001,1000.0%
MAKE_CELL1,1001,1000.0%
TO_BOOL_NONE1,0001,0000.0%
TO_BOOL_STR8608600.0%
TO_BOOL_INT8008000.0%
BINARY_SLICE6606600.0%
COPY_FREE_VARS6606600.0%
RESUME6606600.0%
CALL_LEN6406400.0%
LOAD_ATTR_CLASS6206200.0%
BINARY_SUBSCR_LIST_INT6006000.0%
CALL_BUILTIN_CLASS6006000.0%
CALL_METHOD_DESCRIPTOR_O6006000.0%
STORE_SUBSCR_DICT6006000.0%
BINARY_SUBSCR4604600.0%
IS_OP4604600.0%
CHECK_EXC_MATCH4404400.0%
MAKE_FUNCTION4404400.0%
POP_EXCEPT4404400.0%
PUSH_EXC_INFO4404400.0%
RETURN_GENERATOR4404400.0%
EXTENDED_ARG4404400.0%
SET_FUNCTION_ATTRIBUTE4404400.0%
STORE_DEREF4404400.0%
YIELD_VALUE4404400.0%
BINARY_OP_ADD_INT4404400.0%
COMPARE_OP_STR4404400.0%
BINARY_SUBSCR_TUPLE_INT4004000.0%
CALL_KW_NON_PY4004000.0%
CALL_KW_PY4004000.0%
CALL_METHOD_DESCRIPTOR_NOARGS4004000.0%
LOAD_ATTR_METHOD_LAZY_DICT4004000.0%
LOAD_ATTR_SLOT4004000.0%
UNPACK_SEQUENCE3603600.0%
BINARY_OP_INPLACE_ADD_UNICODE2202200.0%
CALL_INTRINSIC_12202200.0%
LIST_EXTEND2202200.0%
BINARY_OP_ADD_UNICODE2202200.0%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS2002000.0%
CALL_STR_12002000.0%
CALL_TYPE_12002000.0%
FOR_ITER_LIST2002000.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK2002000.0%
TO_BOOL_ALWAYS_TRUE2002000.0%
TO_BOOL_LIST2002000.0%
UNPACK_SEQUENCE_TUPLE2002000.0%
CALL_KW1601600.0%
FOR_ITER1601600.0%
STORE_SUBSCR1201200.0%
CONTAINS_OP40400.0%
ENTER_EXECUTOR520
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,10051.4%1,10051.4%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
88041.1%88041.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success00.0%00.0%
Failure160100.0%160100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
add other12075.0%12075.0%0.0%
multiply different types4025.0%4025.0%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
660100.0%660100.0%0.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
32021.9%32021.9%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,00068.5%1,00068.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success10071.4%10071.4%0.0%
Failure4028.6%4028.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
list slice40100.0%40100.0%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
15,76085.2%15,64085.1%-0.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,3807.5%1,3807.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,440100.0%1,440100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
8050.0%8050.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6,72083.4%6,60083.1%-1.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
7609.4%7609.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success54093.1%54093.1%0.0%
Failure406.9%406.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
different types40100.0%40100.0%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
40100.0%40100.0%0.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
3,30095.4%2,66094.3%-19.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
802.3%802.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success80100.0%80100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
22,80084.3%22,68084.2%-0.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,3408.6%2,3408.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,84095.8%1,84095.8%0.0%
Failure804.2%804.2%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
17,98082.0%17,80081.9%-1.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,4006.4%1,4006.4%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1,2005.5%1,2005.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,380100.0%1,380100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,40015.9%1,40015.9%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6,74076.6%6,74076.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success52078.8%52078.8%0.0%
Failure14021.2%14021.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
class attr simple10071.4%10071.4%0.0%
not managed dict4028.6%4028.6%0.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
608.3%608.3%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
60083.3%60083.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success60100.0%60100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,62014.1%1,62014.1%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
8,96078.2%8,96078.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success74084.1%74084.1%0.0%
Failure14015.9%14015.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple8057.1%8057.1%0.0%
sequence6042.9%6042.9%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,46087.2%2,40087.0%-2.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1806.4%1806.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success180100.0%180100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
101,52030.9%100,28030.7%-1.2%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
207,44063.0%206,70063.2%-0.4%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
18,8605.7%18,8605.8%0.0%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
1,2000.4%1,2000.4%0.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
LOAD_ATTR2,34020.5%2,34020.5%0.0%
TO_BOOL1,62014.2%1,62014.2%0.0%
LOAD_GLOBAL1,40012.3%1,40012.3%0.0%
STORE_ATTR1,40012.3%1,40012.3%0.0%
CALL1,38012.1%1,38012.1%0.0%
BINARY_OP1,1009.6%1,1009.6%0.0%
COMPARE_OP7606.7%7606.7%0.0%
BINARY_SLICE6605.8%6605.8%0.0%
BINARY_SUBSCR3202.8%3202.8%0.0%
UNPACK_SEQUENCE1801.6%1801.6%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
LOAD_GLOBAL_BUILTIN1,200100.0%1,200100.0%0.0%
CACHE00.0%00.0%
BINARY_OP_INPLACE_ADD_UNICODE00.0%00.0%
CHECK_EXC_MATCH00.0%00.0%
GET_ITER00.0%00.0%
INTERPRETER_EXIT00.0%00.0%
MAKE_FUNCTION00.0%00.0%
NOP00.0%00.0%
POP_EXCEPT00.0%00.0%
POP_TOP00.0%00.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault2,90027.9%2,90027.9%0.0%
Calls to Python functions inlined7,50072.1%7,50072.1%0.0%
Calls via PyEval_EvalFrame (total)2,90027.9%2,90027.9%0.0%
Calls via PyEval_EvalFrame (vector)2,02019.4%2,02019.4%0.0%
Calls via PyEval_EvalFrame (generator)8808.5%8808.5%0.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)2,02019.4%2,02019.4%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)8808.5%8808.5%0.0%
Calls via PyEval_EvalFrame (api)4404.2%4404.2%0.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created4404.2%4404.2%0.0%
Frames pushed9,52091.5%9,52091.5%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache dunder misses846422-50.1%
Allocations to 4 kbytes2200.6%2800.7%27.3%
Method cache collisions2,2902,043-10.8%
Method cache dunder hits5,2345,6588.1%
Interpreter immortal decrefs71,86021.6%72,50021.7%0.9%
Mortal increfs59,35318.9%59,01518.8%-0.6%
Method cache misses2,0902,1010.5%
Interpreter mortal increfs108,94034.7%109,40034.9%0.4%
Immortal decrefs62,20818.7%61,95218.6%-0.4%
Immortal increfs57,82018.4%57,59418.4%-0.4%
Allocations21,30056.6%21,36056.7%0.3%
Interpreter immortal increfs87,90028.0%87,66027.9%-0.3%
Frees21,72321,695-0.1%
Method cache hits14,59014,579-0.1%
Mortal decrefs71,56621.5%71,60021.4%0.0%
Interpreter mortal decrefs127,78038.3%127,84038.3%0.0%
Allocations from freelist16,34043.4%16,34043.3%0.0%
Frees to freelist16,56016,5600.0%
Allocations to 512 bytes20,64054.8%20,64054.7%0.0%
Allocations over 4 kbytes4401.2%4401.2%0.0%
Inline values1,1001,1000.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-raytrace-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-raytrace-vs-base.md new file mode 100644 index 00000000..6b96cfda --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-raytrace-vs-base.md @@ -0,0 +1,2636 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD29,412,56011,460-100.0%
FOR_ITER_RANGE1,616,7801,880-99.9%
POP_JUMP_IF_NONE451,12025,720-94.3%
FOR_ITER_LIST31,952,8602,511,980-92.1%
STORE_ATTR_INSTANCE_VALUE128,143,40011,632,460-90.9%
UNPACK_SEQUENCE_TWO_TUPLE16,396,6001,649,500-89.9%
LOAD_ATTR_MODULE9,346,0001,031,780-89.0%
STORE_FAST_STORE_FAST16,823,2802,076,180-87.7%
LOAD_FAST_LOAD_FAST196,303,12031,621,000-83.9%
BINARY_SUBSCR_TUPLE_INT17,473,4403,124,180-82.1%
PUSH_NULL10,146,3201,832,100-81.9%
CALL_BUILTIN_O10,271,3202,264,040-78.0%
UNARY_NEGATIVE3,533,840849,800-76.0%
BINARY_OP_ADD_FLOAT92,345,38028,531,360-69.1%
BINARY_OP_MULTIPLY_INT18,928,2606,615,280-65.1%
TO_BOOL2,040,960820,920-59.8%
BINARY_OP_MULTIPLY_FLOAT172,145,38073,018,620-57.6%
COMPARE_OP_FLOAT2,619,2201,148,140-56.2%
POP_JUMP_IF_NOT_NONE17,617,8407,850,380-55.4%
RESUME_CHECK229,362,800110,457,900-51.8%
LOAD_ATTR_METHOD_WITH_VALUES156,935,74077,530,220-50.6%
CALL_PY_EXACT_ARGS159,434,40084,560,040-47.0%
LOAD_CONST65,711,92034,970,820-46.8%
STORE_FAST92,493,76050,488,380-45.4%
POP_TOP42,787,82023,509,840-45.1%
LOAD_GLOBAL_MODULE59,268,40032,568,480-45.0%
BUILD_TUPLE11,050,7206,620,180-40.1%
GET_ITER4,157,2802,503,540-39.8%
LIST_APPEND9,769,6006,099,880-37.6%
LOAD_FAST809,356,160507,842,020-37.3%
BINARY_OP72,879,72047,274,240-35.1%
POP_JUMP_IF_TRUE4,291,4402,820,360-34.3%
CALL_ALLOC_AND_ENTER_INIT44,517,20029,594,320-33.5%
LOAD_ATTR_INSTANCE_VALUE523,157,000349,160,380-33.3%
STORE_SUBSCR3,201,5202,401,580-25.0%
RETURN_VALUE189,277,120145,834,280-23.0%
COMPARE_OP16,460,52013,558,840-17.6%
BINARY_OP_ADD_INT5,040,3404,240,720-15.9%
POP_JUMP_IF_FALSE43,041,04038,920,320-9.6%
BINARY_OP_SUBTRACT_FLOAT67,918,88061,970,380-8.8%
CALL_BUILTIN_FAST_WITH_KEYWORDS5,226,5004,822,060-7.7%
LOAD_GLOBAL_BUILTIN9,485,9009,073,840-4.3%
RETURN_CONST84,603,60082,153,640-2.9%
CALL_BUILTIN_CLASS3,333,7803,326,160-0.2%
EXIT_INIT_CHECK44,517,20044,517,2000.0%
INTERPRETER_EXIT25,483,52025,483,5200.0%
TO_BOOL_BOOL24,682,42024,682,4200.0%
BINARY_OP_SUBTRACT_INT6,505,5406,505,5400.0%
BUILD_LIST2,448,1602,448,1600.0%
LOAD_FAST_AND_CLEAR2,442,4002,442,4000.0%
SWAP2,442,4002,442,4000.0%
NOP2,015,8402,015,8400.0%
COMPARE_OP_INT1,226,6201,226,6200.0%
LOAD_ATTR1,115,2201,115,2200.0%
LOAD_ATTR_METHOD_NO_DICT821,600821,6000.0%
CALL_LIST_APPEND819,620819,6200.0%
CALL_FUNCTION_EX800,240800,2400.0%
CALL_INTRINSIC_1800,080800,0800.0%
LIST_EXTEND800,080800,0800.0%
UNPACK_SEQUENCE_TUPLE426,620426,6200.0%
TO_BOOL_INT308,540308,5400.0%
CALL4,1204,1200.0%
LOAD_GLOBAL2,5202,5200.0%
CALL_METHOD_DESCRIPTOR_FAST1,9801,9800.0%
STORE_ATTR1,0601,0600.0%
RESUME7207200.0%
CALL_KW_NON_PY5205200.0%
FOR_ITER4004000.0%
BINARY_SUBSCR3203200.0%
CALL_NON_PY_GENERAL3003000.0%
EXTENDED_ARG2402400.0%
LOAD_DEREF2402400.0%
UNPACK_SEQUENCE1201200.0%
BUILD_MAP80800.0%
CALL_KW80800.0%
COPY_FREE_VARS80800.0%
DICT_MERGE80800.0%
LOAD_ATTR_CLASS60600.0%
TO_BOOL_NONE60600.0%
ENTER_EXECUTOR65,798,420
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
313,387,08071.9%151,413,38066.4%-51.7%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
49,496,70011.4%29,468,52012.9%-40.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
71,718,66016.5%46,396,30020.3%-35.3%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success934,84044.6%556,92038.8%-40.4%
Failure1,159,94055.4%876,90061.2%-24.4%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
true divide float2,3600.2%4200.0%-82.2%
add different types157,88013.6%29,7403.4%-81.2%
multiply different types219,06018.9%61,4407.0%-72.0%
subtract other6,6800.6%3,2800.4%-50.9%
true divide different types1,1200.1%8400.1%-25.0%
subtract different types771,82066.5%780,16089.0%1.1%
add other7600.1%7600.1%0.0%
remainder2600.0%2600.0%0.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
17,473,440100.0%3,124,180100.0%-82.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1600.0%1600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success160100.0%160100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
3,857,1801.7%1,702,4801.4%-55.9%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
219,747,62098.3%123,685,74098.6%-43.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,0600.0%2,0600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success74,860100.0%34,220100.0%-54.3%
Failure00.0%00.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
init not simple2020 / 0 !!2020 / 0 !!0.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4050.0%4050.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
3,845,84018.9%2,374,76014.9%-38.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
16,455,44081.0%13,554,48085.1%-17.6%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure5,00098.4%4,28098.2%-14.4%
Success801.6%801.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
float long5,000100.0%4,280100.0%-14.4%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
33,569,640100.0%2,513,860100.0%-92.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2000.0%2000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success200100.0%200100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
4,740,3200.7%832,6200.2%-82.4%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
685,520,08099.2%427,711,42099.5%-37.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,111,6600.2%1,111,6600.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success92,28099.2%18,56096.4%-79.9%
Failure7000.8%7003.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
method38054.3%38054.3%0.0%
mutable class32045.7%32045.7%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
68,752,180100.0%41,640,200100.0%-39.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,2600.0%1,2600.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
2,1200.0%2,1200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,300100.0%1,300100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
128,140,500100.0%11,629,560100.0%-90.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5000.0%5000.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
2,9000.0%2,9000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success620100.0%620100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3,200,000100.0%2,400,380100.0%-25.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,520100.0%1,200100.0%-21.1%
Success00.0%00.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
array int1,520100.0%1,200100.0%-21.1%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,040,1807.5%820,4203.2%-59.8%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
24,991,02092.4%24,991,02096.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure68087.2%40080.0%-41.2%
Success10012.8%10020.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
float680100.0%400100.0%-41.2%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
16,823,220100.0%2,076,120100.0%-87.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
600.0%600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success60100.0%60100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
1,741,614,24048.3%901,618,14043.1%-48.2%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
58,099,2201.6%32,009,4601.5%-44.9%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
1,712,579,90047.5%1,093,579,68052.3%-36.1%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
95,706,5602.7%65,179,4203.1%-31.9%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
TO_BOOL2,040,1802.2%820,4201.3%-59.8%
BINARY_OP71,718,66075.9%46,396,30072.2%-35.3%
STORE_SUBSCR3,200,0003.4%2,400,3803.7%-25.0%
COMPARE_OP16,455,44017.4%13,554,48021.1%-17.6%
LOAD_ATTR1,111,6601.2%1,111,6601.7%0.0%
CALL2,0600.0%2,0600.0%0.0%
LOAD_GLOBAL1,2600.0%1,2600.0%0.0%
STORE_ATTR5000.0%5000.0%0.0%
FOR_ITER2000.0%2000.0%0.0%
BINARY_SUBSCR1600.0%1600.0%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
LOAD_ATTR_METHOD_WITH_VALUES3,983,3206.9%406,3401.3%-89.8%
BINARY_OP_ADD_FLOAT8,097,82013.9%1,243,4203.9%-84.6%
BINARY_OP_MULTIPLY_INT11,484,58019.8%3,152,7009.8%-72.5%
CALL_PY_EXACT_ARGS3,857,1806.6%1,702,4805.3%-55.9%
BINARY_OP_MULTIPLY_FLOAT9,253,78015.9%4,424,52013.8%-52.2%
LOAD_ATTR_INSTANCE_VALUE757,0001.3%426,2801.3%-43.7%
BINARY_OP_SUBTRACT_FLOAT20,189,88034.8%20,177,24063.0%-0.1%
BINARY_OP_SUBTRACT_INT468,5200.8%468,5201.5%0.0%
STORE_ATTR_INSTANCE_VALUE2,9000.0%2,9000.0%0.0%
BINARY_OP_ADD_INT2,1200.0%2,1200.0%0.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault25,483,52011.1%25,483,52011.1%0.0%
Calls to Python functions inlined203,880,00088.9%203,880,00088.9%0.0%
Calls via PyEval_EvalFrame (total)25,483,52011.1%25,483,52011.1%0.0%
Calls via PyEval_EvalFrame (vector)25,483,52011.1%25,483,52011.1%0.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)25,483,52011.1%25,483,52011.1%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)24,682,48010.8%24,682,48010.8%0.0%
Calls via PyEval_EvalFrame (function ex)2400.0%2400.0%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed273,880,720119.4%273,880,720119.4%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache hits6,167,2562,259,586-63.4%
Interpreter immortal decrefs278,169,9208.8%343,968,68010.3%23.7%
Allocations over 4 kbytes1600.0%1800.0%12.5%
Interpreter immortal increfs287,958,14010.4%263,007,1609.2%-8.7%
Method cache collisions909842-7.4%
Interpreter mortal decrefs2,071,973,16065.5%2,201,796,10065.9%6.3%
Interpreter mortal increfs2,340,543,98084.7%2,453,845,96086.2%4.8%
Mortal increfs87,369,8023.2%83,481,4632.9%-4.5%
Method cache misses1,1641,134-2.6%
Mortal decrefs720,841,35522.8%702,524,41121.0%-2.5%
Allocations from freelist302,699,44082.6%304,787,44082.7%0.7%
Frees to freelist302,702,180304,790,1800.7%
Immortal increfs47,883,7321.7%47,568,4471.7%-0.7%
Immortal decrefs92,814,4432.9%92,496,1412.8%-0.3%
Method cache dunder misses431430-0.2%
Frees65,441,54465,446,5730.0%
Allocations63,803,28017.4%63,806,34017.3%0.0%
Allocations to 512 bytes63,803,12017.4%63,804,18017.3%0.0%
Method cache dunder hits24,683,58924,683,5900.0%
Allocations to 4 kbytes00.0%1,9800.0%1,980 / 0 !!
Inline values44,518,24044,518,2400.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-regex_compile-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-regex_compile-vs-base.md new file mode 100644 index 00000000..381cdeba --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-regex_compile-vs-base.md @@ -0,0 +1,3157 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD49,287,20011,160-100.0%
FOR_ITER_RANGE32,552,140222,500-99.3%
BINARY_SLICE548,4806,080-98.9%
STORE_SUBSCR28,298,520449,460-98.4%
LIST_APPEND282,2405,040-98.2%
CONTAINS_OP_DICT928,48090,460-90.3%
EXTENDED_ARG24,341,7602,421,780-90.1%
FOR_ITER4,773,560524,600-89.0%
FOR_ITER_LIST12,816,6801,479,340-88.5%
CONTAINS_OP_SET11,293,3601,515,460-86.6%
UNARY_INVERT162,80024,340-85.0%
BINARY_SUBSCR1,710,280259,480-84.8%
UNARY_NEGATIVE32,8005,040-84.6%
LOAD_FAST_AND_CLEAR32,8005,040-84.6%
CALL_ISINSTANCE12,224,5601,910,720-84.4%
CALL_BUILTIN_CLASS1,755,980283,080-83.9%
BINARY_SUBSCR_GETITEM5,453,920945,940-82.7%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS33,8406,080-82.0%
CALL_METHOD_DESCRIPTOR_NOARGS1,249,460226,040-81.9%
BINARY_SUBSCR_LIST_INT10,722,0002,015,220-81.2%
CALL_NON_PY_GENERAL401,38078,880-80.3%
SWAP107,28024,000-77.6%
LOAD_FAST_LOAD_FAST61,219,20016,933,920-72.3%
UNARY_NOT2,237,680636,280-71.6%
POP_JUMP_IF_NOT_NONE7,760,7202,367,900-69.5%
TO_BOOL_BOOL16,956,4805,277,300-68.9%
LOAD_CONST89,847,20029,543,780-67.1%
BINARY_OP_ADD_INT14,295,1204,745,100-66.8%
FOR_ITER_TUPLE692,320230,960-66.6%
STORE_FAST_STORE_FAST13,780,7204,636,100-66.4%
CONTAINS_OP8,532,8802,891,440-66.1%
NOP15,235,2805,533,500-63.7%
STORE_FAST_LOAD_FAST1,445,680547,360-62.1%
LOAD_GLOBAL_BUILTIN44,272,54016,792,720-62.1%
POP_JUMP_IF_FALSE84,727,84032,509,040-61.6%
STORE_FAST111,435,68045,351,360-59.3%
LOAD_FAST293,456,320122,071,700-58.4%
BINARY_SUBSCR_DICT1,339,440559,480-58.2%
CALL_BUILTIN_FAST_WITH_KEYWORDS4,910,3202,107,840-57.1%
LOAD_GLOBAL_MODULE72,530,16031,402,420-56.7%
IS_OP22,547,2009,788,440-56.6%
TO_BOOL_INT14,096,5606,221,140-55.9%
GET_ITER6,208,3202,757,200-55.6%
STORE_ATTR_INSTANCE_VALUE19,073,1208,480,380-55.5%
RESUME_CHECK41,725,06019,165,960-54.1%
TO_BOOL2,427,7801,117,860-54.0%
UNPACK_SEQUENCE_TWO_TUPLE15,720,6207,426,080-52.8%
LOAD_ATTR_INSTANCE_VALUE50,156,48023,850,140-52.4%
PUSH_NULL35,134,56016,861,060-52.0%
CALL_BUILTIN_O19,866,0009,546,200-51.9%
BINARY_OP10,892,7005,243,680-51.9%
CALL_ALLOC_AND_ENTER_INIT1,946,880962,440-50.6%
LOAD_ATTR_METHOD_NO_DICT6,735,5603,336,740-50.5%
BINARY_SUBSCR_STR_INT9,411,1604,666,740-50.4%
LOAD_ATTR_SLOT895,680449,100-49.9%
CALL_LIST_APPEND4,252,3202,147,200-49.5%
BUILD_TUPLE8,535,5204,457,560-47.8%
CALL_BOUND_METHOD_EXACT_ARGS9,231,1204,846,200-47.5%
BUILD_LIST3,838,3202,019,720-47.4%
BINARY_OP_INPLACE_ADD_UNICODE292,960154,400-47.3%
CALL_METHOD_DESCRIPTOR_FAST1,247,760664,100-46.8%
POP_TOP34,700,48018,562,780-46.5%
COPY3,876,2402,074,280-46.5%
JUMP_FORWARD4,996,0002,756,920-44.8%
TO_BOOL_NONE2,371,4001,320,000-44.3%
COMPARE_OP_INT3,004,4801,673,820-44.3%
LOAD_ATTR_METHOD_WITH_VALUES8,131,9204,587,920-43.6%
CALL_PY_EXACT_ARGS16,186,2809,162,680-43.4%
LOAD_ATTR_MODULE1,794,6201,066,820-40.6%
TO_BOOL_LIST2,243,9001,342,160-40.2%
COMPARE_OP_STR13,218,2207,928,240-40.0%
STORE_SUBSCR_LIST_INT2,764,7201,662,780-39.9%
BINARY_OP_SUBTRACT_INT4,535,6002,823,180-37.8%
CALL_TYPE_1906,960572,120-36.9%
POP_JUMP_IF_TRUE13,007,4408,232,720-36.7%
CALL_PY_GENERAL453,200286,980-36.7%
POP_JUMP_IF_NONE2,945,3601,868,060-36.6%
DELETE_SUBSCR5,4403,800-30.1%
CALL_LEN12,681,4408,980,820-29.2%
RETURN_CONST15,736,32011,267,260-28.4%
BINARY_OP_MULTIPLY_INT445,040327,860-26.3%
LOAD_ATTR9,322,3006,931,900-25.6%
UNPACK_SEQUENCE_TUPLE598,720460,260-23.1%
TO_BOOL_STR799,520690,600-13.6%
BINARY_SUBSCR_TUPLE_INT2,494,2402,193,660-12.1%
RETURN_VALUE26,682,88024,183,460-9.4%
COMPARE_OP1,164,8601,131,580-2.9%
LOAD_ATTR_PROPERTY708,480704,620-0.5%
STORE_SUBSCR_DICT451,360448,960-0.5%
INTERPRETER_EXIT6,492,2406,492,2400.0%
EXIT_INIT_CHECK1,946,8801,946,8800.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK671,760671,7600.0%
CHECK_EXC_MATCH566,480566,4800.0%
POP_EXCEPT566,480566,4800.0%
PUSH_EXC_INFO566,480566,4800.0%
BUILD_MAP448,880448,8800.0%
CALL_METHOD_DESCRIPTOR_O293,680293,6800.0%
CALL_TUPLE_1223,920223,9200.0%
LOAD_FAST_CHECK79,84079,8400.0%
CALL_BUILTIN_FAST52,42052,4200.0%
STORE_SLICE45,20045,2000.0%
LOAD_GLOBAL4404400.0%
CALL4204200.0%
LOAD_DEREF2402400.0%
CALL_FUNCTION_EX1601600.0%
CALL_INTRINSIC_180800.0%
COPY_FREE_VARS80800.0%
LIST_EXTEND80800.0%
RESUME60600.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
UNPACK_SEQUENCE40400.0%
ENTER_EXECUTOR17,698,840
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
19,568,78064.2%8,050,60060.6%-58.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
10,886,50035.7%5,239,10039.4%-51.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure6,18099.7%4,56099.6%-26.2%
Success200.3%200.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
and int4,36070.6%2,84062.3%-34.9%
add other4206.8%3808.3%-9.5%
or84013.6%78017.1%-7.1%
multiply different types2604.2%2605.7%0.0%
add different types1001.6%1002.2%0.0%
and different types1001.6%1002.2%0.0%
floor divide1001.6%1002.2%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
548,480100.0%6,080100.0%-98.9%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,709,3605.5%258,9802.4%-84.8%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
27,911,60089.7%8,871,88083.4%-68.2%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1,509,1604.8%1,509,16014.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure9203.1%5001.7%-45.7%
Success28,44096.9%28,44098.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other34037.0%6012.0%-82.4%
list slice10010.9%204.0%-80.0%
buffer slice10010.9%6012.0%-40.0%
out of range10010.9%8016.0%-20.0%
string slice28030.4%28056.0%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
96,241,64099.9%46,779,32099.9%-51.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1800.0%1800.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
52,4200.1%52,4200.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,220100.0%1,220100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
16,056,90092.3%9,431,88087.9%-41.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,157,5406.7%1,124,18010.5%-2.9%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
165,8001.0%170,1801.6%2.6%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success3,12029.9%3,20030.2%2.6%
Failure7,32070.1%7,40069.8%1.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
different types6,46088.3%6,54088.4%1.2%
other3004.1%3004.1%0.0%
list2203.0%2203.0%0.0%
big int2002.7%2002.7%0.0%
tuple1401.9%1401.9%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
12,221,84058.9%1,605,92035.7%-86.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
8,530,48041.1%2,890,34064.3%-66.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure2,400100.0%1,100100.0%-54.2%
Success00.0%00.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
str2,34097.5%1,04094.5%-55.6%
list602.5%605.5%0.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
45,794,00090.1%1,896,76077.2%-95.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4,754,0609.4%522,14021.2%-89.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
267,1400.5%36,0401.5%-86.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure19,46079.3%2,42077.1%-87.6%
Success5,08020.7%72022.9%-85.8%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
seq iter19,18098.6%2,20090.9%-88.5%
map800.4%200.8%-75.0%
dict keys1000.5%1004.1%0.0%
dict items1000.5%1004.1%0.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
69,094,50088.1%34,667,10083.3%-49.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
9,309,26011.9%6,923,88016.6%-25.6%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success9,48072.7%5,20064.8%-45.1%
Failure3,56027.3%2,82035.2%-20.8%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
not managed dict56015.7%30010.6%-46.4%
class attr simple3209.0%2007.1%-37.5%
builtin class method1002.8%802.8%-20.0%
method2,42068.0%2,12075.2%-12.4%
overriding descriptor1203.4%1204.3%0.0%
mutable class401.1%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
116,802,700100.0%48,195,140100.0%-58.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1800.0%1800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success260100.0%260100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
19,073,120100.0%8,480,380100.0%-55.5%
+ + +
+ +### STORE_SLICE + +
+ specialization stats for STORE_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
45,200100.0%45,200100.0%0.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
28,291,12089.8%448,76017.5%-98.4%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
3,216,08010.2%2,111,74082.5%-34.3%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure7,400100.0%700100.0%-90.5%
Success00.0%00.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
bytearray int7,08095.7%38054.3%-94.6%
py simple1602.2%16022.9%0.0%
out of range801.1%8011.4%0.0%
list slice801.1%8011.4%0.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
36,339,42093.4%14,756,60092.4%-59.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,422,8806.2%1,114,5207.0%-54.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
128,4400.3%94,6000.6%-26.3%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure4,94067.5%3,34065.2%-32.4%
Success2,38032.5%1,78034.8%-25.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple2,20044.5%1,38041.3%-37.3%
mapping72014.6%48014.4%-33.3%
other1,54031.2%1,06031.7%-31.2%
dict3807.7%3209.6%-15.8%
number1002.0%1003.0%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
16,319,340100.0%7,886,340100.0%-51.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.0%200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
67,717,4604.4%18,602,1803.0%-72.5%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
511,988,44033.5%207,419,12033.3%-59.5%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
944,275,26061.9%395,827,42063.5%-58.1%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
2,122,9600.1%1,862,5600.3%-12.3%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
BINARY_SLICE548,4800.8%6,0800.0%-98.9%
STORE_SUBSCR28,291,12041.8%448,7602.4%-98.4%
FOR_ITER4,754,0607.0%522,1402.8%-89.0%
BINARY_SUBSCR1,709,3602.5%258,9801.4%-84.8%
CONTAINS_OP8,530,48012.6%2,890,34015.6%-66.1%
TO_BOOL2,422,8803.6%1,114,5206.0%-54.0%
BINARY_OP10,886,50016.1%5,239,10028.2%-51.9%
LOAD_ATTR9,309,26013.8%6,923,88037.3%-25.6%
COMPARE_OP1,157,5401.7%1,124,1806.1%-2.9%
STORE_SLICE45,2000.1%45,2000.2%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
FOR_ITER_LIST267,14012.6%36,0401.9%-86.5%
TO_BOOL_NONE94,8404.5%61,0003.3%-35.7%
COMPARE_OP_STR165,8007.8%170,1809.1%2.6%
BINARY_SUBSCR_LIST_INT1,276,88060.1%1,276,88068.5%0.0%
BINARY_SUBSCR_STR_INT232,28010.9%232,28012.5%0.0%
CALL_BUILTIN_FAST52,4202.5%52,4202.8%0.0%
TO_BOOL_LIST25,4401.2%25,4401.4%0.0%
TO_BOOL_STR8,1600.4%8,1600.4%0.0%
CACHE00.0%
BINARY_OP_INPLACE_ADD_UNICODE00.0%
RESUME1600.0%
RESUME_CHECK1600.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault7,745,04018.6%7,745,04018.6%0.0%
Calls to Python functions inlined33,980,08081.4%33,980,08081.4%0.0%
Calls via PyEval_EvalFrame (total)7,745,04018.6%7,745,04018.6%0.0%
Calls via PyEval_EvalFrame (vector)7,745,04018.6%7,745,04018.6%0.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)7,745,04018.6%7,745,04018.6%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)7,484,16017.9%7,484,16017.9%0.0%
Calls via PyEval_EvalFrame (function ex)1600.0%1600.0%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created3,072,0807.4%3,072,0807.4%0.0%
Frames pushed43,672,000104.7%43,672,000104.7%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache dunder misses11,2149-99.9%
Method cache collisions22,45166-99.7%
Method cache misses11,26969-99.4%
Allocations to 4 kbytes39,9200.1%55,1200.1%38.1%
Interpreter immortal increfs313,244,84028.6%237,103,74022.2%-24.3%
Interpreter mortal increfs553,793,46050.5%603,648,86056.4%9.0%
Interpreter mortal decrefs599,380,38050.1%646,533,30051.1%7.9%
Interpreter immortal decrefs359,230,94030.0%378,158,90029.9%5.3%
Allocations over 4 kbytes2,0800.0%2,1800.0%4.8%
Mortal decrefs124,571,61710.4%127,217,52810.1%2.1%
Mortal increfs98,902,3549.0%98,827,8449.2%-0.1%
Method cache hits9,362,4719,368,6310.1%
Method cache dunder hits18,870,74618,881,6310.1%
Allocations56,660,00077.3%56,679,26077.3%0.0%
Frees59,404,28259,423,0020.0%
Immortal increfs130,710,75211.9%130,751,15212.2%0.0%
Immortal decrefs112,367,6299.4%112,389,2488.9%0.0%
Allocations to 512 bytes56,618,00077.3%56,621,96077.2%0.0%
Allocations from freelist16,631,40022.7%16,632,22022.7%0.0%
Frees to freelist16,640,44016,641,2600.0%
Inline values1,946,8801,946,8800.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-regex_dna-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-regex_dna-vs-base.md new file mode 100644 index 00000000..320daaa8 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-regex_dna-vs-base.md @@ -0,0 +1,2951 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD24,1002,160-91.0%
BINARY_SLICE2,560320-87.5%
LIST_APPEND2,560320-87.5%
FOR_ITER_RANGE7,0401,300-81.5%
CONTAINS_OP_SET10,2202,560-75.0%
CONTAINS_OP7,3002,160-70.4%
EXTENDED_ARG23,5807,140-69.7%
BINARY_OP_ADD_INT12,0803,660-69.7%
BINARY_SUBSCR_STR_INT9,2602,880-68.9%
FOR_ITER4,4401,460-67.1%
NOP17,3606,260-63.9%
BINARY_SUBSCR_GETITEM4,0601,480-63.5%
FOR_ITER_LIST12,1404,560-62.4%
FOR_ITER_TUPLE2,260900-60.2%
COMPARE_OP_STR12,8005,480-57.2%
POP_JUMP_IF_NOT_NONE7,6203,400-55.4%
LOAD_ATTR_METHOD_WITH_VALUES6,9003,180-53.9%
STORE_FAST_STORE_FAST12,8806,300-51.1%
CALL_BUILTIN_CLASS4,5202,280-49.6%
BINARY_SUBSCR_LIST_INT7,8804,180-47.0%
CALL_BOUND_METHOD_EXACT_ARGS9,6005,100-46.9%
BINARY_SUBSCR_DICT1,8801,000-46.8%
BINARY_OP_SUBTRACT_INT5,9403,200-46.1%
POP_JUMP_IF_FALSE84,08046,500-44.7%
UNPACK_SEQUENCE_TWO_TUPLE15,4208,540-44.6%
IS_OP21,62012,540-42.0%
CALL_ISINSTANCE12,1407,180-40.9%
LOAD_ATTR_INSTANCE_VALUE45,92027,300-40.5%
LOAD_CONST64,76038,540-40.5%
LOAD_FAST293,860177,900-39.5%
CALL_TYPE_12,2801,400-38.6%
STORE_ATTR_INSTANCE_VALUE18,60011,920-35.9%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS1,020660-35.3%
CALL_PY_GENERAL2,5201,640-34.9%
RESUME_CHECK40,64026,780-34.1%
CALL_METHOD_DESCRIPTOR_FAST2,8201,860-34.0%
STORE_FAST83,24055,520-33.3%
LOAD_FAST_LOAD_FAST36,60024,900-32.0%
TO_BOOL_BOOL15,58010,620-31.8%
CALL_PY_EXACT_ARGS16,32011,340-30.5%
LOAD_GLOBAL_MODULE73,50051,380-30.1%
RETURN_CONST14,52010,200-29.8%
CALL_NON_PY_GENERAL1,7801,260-29.2%
PUSH_NULL36,88026,140-29.1%
TO_BOOL_INT10,7807,680-28.8%
LOAD_ATTR_METHOD_NO_DICT12,0608,740-27.5%
TO_BOOL2,6001,940-25.4%
LOAD_ATTR_MODULE3,4802,600-25.3%
LOAD_ATTR_SLOT720540-25.0%
CALL_LIST_APPEND6,1004,620-24.3%
LOAD_GLOBAL_BUILTIN43,72033,620-23.1%
COMPARE_OP_INT6,7005,440-18.8%
RETURN_VALUE27,48022,380-18.6%
BUILD_TUPLE11,4609,460-17.5%
STORE_FAST_LOAD_FAST1,160960-17.2%
TO_BOOL_LIST4,2803,640-15.0%
CALL_BUILTIN_O18,34015,620-14.8%
STORE_SUBSCR_LIST_INT1,5601,360-12.8%
POP_TOP30,94027,080-12.5%
CONTAINS_OP_DICT220200-9.1%
POP_JUMP_IF_NONE2,1802,020-7.3%
POP_JUMP_IF_TRUE11,58010,760-7.1%
BINARY_OP10,78010,060-6.7%
CALL_LEN12,80012,040-5.9%
LOAD_ATTR8,1207,880-3.0%
JUMP_FORWARD5,9805,820-2.7%
GET_ITER6,8406,680-2.3%
BUILD_LIST6,4006,4000.0%
INTERPRETER_EXIT5,0205,0200.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS2,9002,9000.0%
COPY2,2202,2200.0%
TO_BOOL_NONE1,8201,8200.0%
BINARY_SUBSCR_TUPLE_INT1,7801,7800.0%
COMPARE_OP1,7201,7200.0%
EXIT_INIT_CHECK1,6801,6800.0%
CALL_ALLOC_AND_ENTER_INIT1,6801,6800.0%
STORE_SUBSCR1,3401,3400.0%
UNARY_NOT1,2401,2400.0%
BINARY_SUBSCR1,0401,0400.0%
SWAP9609600.0%
CHECK_EXC_MATCH8408400.0%
POP_EXCEPT8408400.0%
PUSH_EXC_INFO8408400.0%
BUILD_MAP8408400.0%
LOAD_ATTR_PROPERTY8408400.0%
STORE_SUBSCR_DICT8408400.0%
CALL_METHOD_DESCRIPTOR_O7607600.0%
TO_BOOL_STR7607600.0%
CALL7207200.0%
LOAD_GLOBAL7007000.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK5405400.0%
CALL_METHOD_DESCRIPTOR_NOARGS4204200.0%
CALL_TUPLE_14204200.0%
UNPACK_SEQUENCE_TUPLE4204200.0%
CALL_BUILTIN_FAST3203200.0%
UNARY_NEGATIVE3203200.0%
LOAD_FAST_AND_CLEAR3203200.0%
LOAD_FAST_CHECK3003000.0%
LOAD_DEREF2402400.0%
CALL_FUNCTION_EX1601600.0%
RESUME1001000.0%
CALL_INTRINSIC_180800.0%
COPY_FREE_VARS80800.0%
LIST_EXTEND80800.0%
UNPACK_SEQUENCE60600.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
BINARY_OP_MULTIPLY_INT20200.0%
ENTER_EXECUTOR18,540
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
18,10062.7%6,94040.8%-61.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
10,32035.7%9,62056.6%-6.8%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure44095.7%42095.5%-4.5%
Success204.3%204.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
and int22050.0%20047.6%-9.1%
or10022.7%10023.8%0.0%
and different types6013.6%6014.3%0.0%
add other409.1%409.5%0.0%
multiply different types204.5%204.8%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,560100.0%320100.0%-87.5%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
24,00092.7%10,46084.6%-56.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
9603.7%9607.8%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
8603.3%8607.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success6060.0%6060.0%0.0%
Failure4040.0%4040.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other2050.0%2050.0%0.0%
buffer slice2050.0%2050.0%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
101,72099.0%73,38098.6%-27.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3600.4%3600.5%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
3200.3%3200.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success360100.0%360100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
19,08089.9%10,50083.1%-45.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,6207.6%1,62012.8%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
4202.0%4203.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success00.0%00.0%
Failure100100.0%100100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
big int4040.0%4040.0%0.0%
tuple4040.0%4040.0%0.0%
list2020.0%2020.0%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
10,44058.9%2,76056.1%-73.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
7,28041.0%2,12043.1%-70.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure20100.0%40100.0%100.0%
Success00.0%00.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
str20100.0%40100.0%100.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
8603.3%2002.4%-76.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4,20016.2%1,32016.1%-68.6%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
20,58079.5%6,56079.8%-68.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure18069.2%4028.6%-77.8%
Success8030.8%10071.4%25.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
seq iter14077.8%
dict keys2011.1%2050.0%0.0%
dict items2011.1%2050.0%0.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
70,46089.7%43,74084.7%-37.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
7,7009.8%7,52014.6%-2.3%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure24057.1%18050.0%-25.0%
Success18042.9%18050.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
not managed dict4016.7%2011.1%-50.0%
method16066.7%16088.9%0.0%
class attr simple4016.7%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
117,22099.4%85,00099.2%-27.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3400.3%3400.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success360100.0%360100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
18,600100.0%11,920100.0%-35.9%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,40064.2%2,20062.1%-8.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,32035.3%1,32037.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success00.0%00.0%
Failure20100.0%20100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
bytearray int20100.0%20100.0%0.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,4006.7%1,7606.7%-26.7%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
33,10092.4%24,40092.2%-26.3%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1200.3%1200.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure18090.0%16088.9%-11.1%
Success2010.0%2011.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple8044.4%6037.5%-25.0%
mapping8044.4%8050.0%0.0%
number2011.1%2012.5%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
15,84099.6%8,96099.3%-43.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.1%200.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
486,88035.4%311,40035.1%-36.0%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
843,84061.4%544,08061.4%-35.5%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
41,3803.0%29,4003.3%-29.0%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
2,5800.2%1,9200.2%-25.6%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
CONTAINS_OP7,28018.6%2,1207.8%-70.9%
FOR_ITER4,20010.7%1,3204.8%-68.6%
TO_BOOL2,4006.1%1,7606.5%-26.7%
BINARY_OP10,32026.4%9,62035.3%-6.8%
LOAD_ATTR7,70019.7%7,52027.6%-2.3%
BINARY_SLICE2,5606.6%
COMPARE_OP1,6204.1%1,6205.9%0.0%
STORE_SUBSCR1,3203.4%1,3204.8%0.0%
BINARY_SUBSCR9602.5%9603.5%0.0%
CALL3600.9%3601.3%0.0%
LOAD_GLOBAL3401.2%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
FOR_ITER_LIST86033.3%20010.4%-76.7%
BINARY_SUBSCR_LIST_INT44017.1%44022.9%0.0%
BINARY_SUBSCR_STR_INT42016.3%42021.9%0.0%
COMPARE_OP_STR42016.3%42021.9%0.0%
CALL_BUILTIN_FAST32012.4%32016.7%0.0%
TO_BOOL_LIST1204.7%1206.2%0.0%
CACHE00.0%00.0%
CHECK_EXC_MATCH00.0%00.0%
EXIT_INIT_CHECK00.0%00.0%
GET_ITER00.0%00.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault5,44013.4%5,44013.4%0.0%
Calls to Python functions inlined35,30086.6%35,30086.6%0.0%
Calls via PyEval_EvalFrame (total)5,44013.4%5,44013.4%0.0%
Calls via PyEval_EvalFrame (vector)5,44013.4%5,44013.4%0.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)5,44013.4%5,44013.4%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)5,26012.9%5,26012.9%0.0%
Calls via PyEval_EvalFrame (function ex)1600.4%1600.4%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created1,6804.1%1,6804.1%0.0%
Frames pushed42,420104.1%42,420104.1%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache collisions11813514.4%
Interpreter immortal increfs290,9400.7%257,6800.6%-11.4%
Method cache dunder misses4944-10.2%
Method cache misses1001099.0%
Interpreter immortal decrefs326,2400.8%345,7400.9%6.0%
Interpreter mortal increfs490,0401.2%510,8201.3%4.2%
Interpreter mortal decrefs524,2001.3%542,3201.3%3.5%
Allocations to 4 kbytes17,8800.3%18,4800.3%3.4%
Method cache hits8,2208,151-0.8%
Method cache dunder hits19,07119,0760.0%
Immortal decrefs4,401,00410.9%4,401,99110.8%0.0%
Immortal increfs10,753,77626.6%10,755,36026.7%0.0%
Mortal decrefs35,302,69487.1%35,306,99587.0%0.0%
Allocations6,498,62099.6%6,499,22099.6%0.0%
Mortal increfs28,822,84271.4%28,824,48671.4%0.0%
Frees7,872,0467,872,043-0.0%
Allocations from freelist26,2000.4%26,2000.4%0.0%
Frees to freelist26,76026,7600.0%
Allocations to 512 bytes6,477,06099.3%6,477,06099.3%0.0%
Allocations over 4 kbytes3,6800.1%3,6800.1%0.0%
Inline values1,6801,6800.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-regex_effbot-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-regex_effbot-vs-base.md new file mode 100644 index 00000000..718f2168 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-regex_effbot-vs-base.md @@ -0,0 +1,3008 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD73,3203,240-95.6%
FOR_ITER_LIST59,5604,460-92.5%
STORE_FAST_STORE_FAST58,9408,420-85.7%
FOR_ITER_RANGE12,6201,920-84.8%
UNPACK_SEQUENCE_TWO_TUPLE60,68010,020-83.5%
BINARY_SUBSCR_LIST_INT15,6002,600-83.3%
STORE_SUBSCR6,0801,220-79.9%
CONTAINS_OP8,0803,360-58.4%
FOR_ITER_TUPLE1,300620-52.3%
EXTENDED_ARG22,72010,920-51.9%
CONTAINS_OP_SET10,0405,080-49.4%
CALL_BUILTIN_FAST_WITH_KEYWORDS3,2601,660-49.1%
BINARY_SUBSCR_STR_INT9,0804,880-46.3%
BINARY_OP_ADD_INT12,4206,880-44.6%
LOAD_ATTR_INSTANCE_VALUE50,82029,580-41.8%
CALL_BOUND_METHOD_EXACT_ARGS9,2605,480-40.8%
BINARY_SUBSCR_GETITEM5,5803,320-40.5%
CALL_LIST_APPEND10,2206,280-38.6%
IS_OP22,20014,200-36.0%
LOAD_ATTR_METHOD_WITH_VALUES8,4405,480-35.1%
TO_BOOL_NONE960640-33.3%
COMPARE_OP_STR15,08010,560-30.0%
FOR_ITER2,7803,60029.5%
STORE_ATTR_INSTANCE_VALUE19,42013,900-28.4%
COMPARE_OP_INT5,0603,760-25.7%
LOAD_ATTR_SLOT1,3601,020-25.0%
CALL_BUILTIN_O16,42013,240-19.4%
RETURN_CONST18,92015,340-18.9%
STORE_SUBSCR_LIST_INT1,8201,480-18.7%
CONTAINS_OP_DICT660540-18.2%
STORE_FAST_LOAD_FAST1,3401,160-13.4%
POP_JUMP_IF_NONE3,0802,740-11.0%
NOP483,960430,740-11.0%
RESUME_CHECK987,360878,960-11.0%
LOAD_ATTR10,0208,940-10.8%
PUSH_NULL503,740449,940-10.7%
BINARY_OP_SUBTRACT_INT4,6404,160-10.3%
BINARY_SUBSCR_DICT474,560425,640-10.3%
CALL_PY_EXACT_ARGS490,080440,100-10.2%
CALL_PY_GENERAL471,200424,780-9.9%
LOAD_FAST_LOAD_FAST1,927,2601,770,240-8.1%
POP_JUMP_IF_TRUE12,02011,180-7.0%
LOAD_GLOBAL_MODULE2,425,8202,269,440-6.4%
CALL_ISINSTANCE953,420897,520-5.9%
TO_BOOL_BOOL961,340905,380-5.8%
BUILD_TUPLE953,860902,700-5.4%
UNARY_NOT1,1401,080-5.3%
CALL_LEN12,06011,440-5.1%
LOAD_FAST5,007,3604,757,040-5.0%
CALL_TYPE_1941,900895,480-4.9%
LOAD_GLOBAL_BUILTIN2,395,5402,282,220-4.7%
BINARY_SUBSCR_TUPLE_INT6,9006,600-4.3%
POP_JUMP_IF_FALSE1,971,9001,890,560-4.1%
LOAD_CONST553,320531,140-4.0%
BINARY_OP19,62018,900-3.7%
TO_BOOL2,4202,340-3.3%
STORE_FAST1,034,2601,003,820-2.9%
TO_BOOL_LIST3,0002,920-2.7%
COPY3,7403,680-1.6%
POP_JUMP_IF_NOT_NONE478,060474,680-0.7%
TO_BOOL_INT482,340479,800-0.5%
POP_TOP973,340968,460-0.5%
LOAD_ATTR_METHOD_NO_DICT953,000948,480-0.5%
RETURN_VALUE969,720967,020-0.3%
CALL_METHOD_DESCRIPTOR_FAST471,800471,220-0.1%
JUMP_FORWARD475,860475,740-0.0%
CALL_NON_PY_GENERAL471,120471,1200.0%
CHECK_EXC_MATCH471,080471,0800.0%
POP_EXCEPT471,080471,0800.0%
PUSH_EXC_INFO471,080471,0800.0%
GET_ITER6,8406,8400.0%
INTERPRETER_EXIT6,3606,3600.0%
BINARY_OP_ADD_UNICODE5,0405,0400.0%
BUILD_LIST4,6604,6600.0%
LOAD_DEREF3,3203,3200.0%
COPY_FREE_VARS3,0203,0200.0%
CALL2,3602,3600.0%
COMPARE_OP2,2402,2400.0%
LOAD_ATTR_MODULE2,0002,0000.0%
EXIT_INIT_CHECK1,9401,9400.0%
CALL_ALLOC_AND_ENTER_INIT1,9401,9400.0%
BINARY_SUBSCR1,5201,5200.0%
CALL_BUILTIN_CLASS1,4201,4200.0%
TO_BOOL_STR1,3401,3400.0%
LOAD_GLOBAL1,2001,2000.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK1,0201,0200.0%
LOAD_ATTR_PROPERTY9209200.0%
UNPACK_SEQUENCE_TUPLE8208200.0%
BUILD_MAP7007000.0%
STORE_SUBSCR_DICT6806800.0%
BINARY_OP_MULTIPLY_INT6406400.0%
CALL_METHOD_DESCRIPTOR_NOARGS3403400.0%
CALL_TUPLE_13403400.0%
CALL_METHOD_DESCRIPTOR_O2602600.0%
DELETE_SUBSCR2402400.0%
RESUME2202200.0%
UNARY_INVERT2002000.0%
CALL_BUILTIN_FAST1601600.0%
CALL_FUNCTION_EX1601600.0%
MAKE_FUNCTION1401400.0%
MAKE_CELL1401400.0%
MAP_ADD1401400.0%
SET_FUNCTION_ATTRIBUTE1401400.0%
STORE_DEREF1401400.0%
CALL_INTRINSIC_180800.0%
LIST_EXTEND80800.0%
UNPACK_SEQUENCE80800.0%
STORE_SLICE60600.0%
LOAD_FAST_CHECK60600.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
SWAP40400.0%
BINARY_OP_INPLACE_ADD_UNICODE20200.0%
LOAD_FAST_AND_CLEAR20200.0%
STORE_ATTR20200.0%
ENTER_EXECUTOR67,880
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
22,82053.8%16,80047.1%-26.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
16,70039.3%15,98044.8%-4.3%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success88030.1%88030.1%0.0%
Failure2,04069.9%2,04069.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
multiply different types1,70083.3%1,70083.3%0.0%
and int22010.8%22010.8%0.0%
or803.9%803.9%0.0%
add other201.0%201.0%0.0%
and different types201.0%201.0%0.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
510,48099.5%441,80099.4%-13.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,4000.3%1,4000.3%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1,2400.2%1,2400.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success12085.7%12085.7%0.0%
Failure2014.3%2014.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other20100.0%20100.0%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,921,98099.9%2,752,20099.9%-5.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,4600.0%1,4600.1%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1600.0%1600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success900100.0%900100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
19,58087.5%13,76083.1%-29.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,1009.4%2,10012.7%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
5602.5%5603.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success00.0%00.0%
Failure160100.0%160100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other4025.0%4025.0%0.0%
different types4025.0%4025.0%0.0%
big int4025.0%4025.0%0.0%
tuple2012.5%2012.5%0.0%
list2012.5%2012.5%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
8,06042.9%3,30036.7%-59.1%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
10,70057.0%5,62062.6%-47.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure20100.0%60100.0%200.0%
Success00.0%00.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
str20100.0%60100.0%200.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
71,56093.8%7,00066.0%-90.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,4403.2%3,40032.1%39.3%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1,9202.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure22057.9%6030.0%-72.7%
Success16042.1%14070.0%-12.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
seq iter18081.8%4066.7%-77.8%
dict keys209.1%2033.3%0.0%
dict items209.1%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
9,5600.9%8,5400.9%-10.7%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,017,56099.0%988,50099.1%-2.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure22047.8%16040.0%-27.3%
Success24052.2%24060.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
not managed dict4018.2%2012.5%-50.0%
method14063.6%14087.5%0.0%
class attr simple4018.2%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
4,821,360100.0%4,551,660100.0%-5.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
9000.0%9000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success300100.0%300100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
19,42099.9%13,90099.9%-28.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.1%200.1%0.0%
+ + +
+ +### STORE_SLICE + +
+ specialization stats for STORE_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
60100.0%60100.0%0.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6,04070.4%1,20035.5%-80.1%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,50029.1%2,16063.9%-13.6%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure40100.0%20100.0%-50.0%
Success00.0%00.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
bytearray int40100.0%20100.0%-50.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,448,32099.8%1,389,42099.8%-4.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,2200.2%2,1400.2%-3.6%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
6600.0%6600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success12060.0%12060.0%0.0%
Failure8040.0%8040.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
mapping6075.0%6075.0%0.0%
number2025.0%2025.0%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
61,50099.9%10,84099.3%-82.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.1%400.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
4,5400.0%2,6200.0%-42.3%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
56,4800.2%45,8400.2%-18.8%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
12,848,20043.0%11,963,04042.4%-6.9%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
16,991,94056.8%16,203,80057.4%-4.6%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
STORE_SUBSCR6,04011.8%1,2003.0%-80.1%
CONTAINS_OP8,06015.8%3,3008.1%-59.1%
FOR_ITER2,4404.8%3,4008.4%39.3%
LOAD_ATTR9,56018.7%8,54021.1%-10.7%
BINARY_OP16,70032.7%15,98039.4%-4.3%
TO_BOOL2,2204.4%2,1405.3%-3.6%
COMPARE_OP2,1004.1%2,1005.2%0.0%
CALL1,4602.9%1,4603.6%0.0%
BINARY_SUBSCR1,4002.7%1,4003.5%0.0%
LOAD_GLOBAL9001.8%9002.2%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
FOR_ITER_LIST1,92042.3%
BINARY_SUBSCR_LIST_INT90019.8%90034.4%0.0%
COMPARE_OP_STR56012.3%56021.4%0.0%
TO_BOOL_LIST54011.9%54020.6%0.0%
BINARY_SUBSCR_STR_INT3407.5%34013.0%0.0%
CALL_BUILTIN_FAST1603.5%1606.1%0.0%
TO_BOOL_STR1202.6%1204.6%0.0%
CACHE00.0%00.0%
BINARY_OP_INPLACE_ADD_UNICODE00.0%00.0%
CHECK_EXC_MATCH00.0%00.0%
DELETE_SUBSCR00.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault7,2400.7%7,2400.7%0.0%
Calls to Python functions inlined980,34099.3%980,34099.3%0.0%
Calls via PyEval_EvalFrame (total)7,2400.7%7,2400.7%0.0%
Calls via PyEval_EvalFrame (vector)7,2400.7%7,2400.7%0.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)7,2400.7%7,2400.7%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)6,8600.7%6,8600.7%0.0%
Calls via PyEval_EvalFrame (function ex)1600.0%1600.0%0.0%
Calls via PyEval_EvalFrame (api)400.0%400.0%0.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created472,84047.9%472,84047.9%0.0%
Frames pushed989,520100.2%989,520100.2%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache dunder misses5233-36.5%
Allocations to 4 kbytes2,1400.0%2,4200.0%13.1%
Method cache collisions166148-10.8%
Method cache misses1451514.1%
Interpreter immortal decrefs3,233,62011.5%3,302,40011.7%2.1%
Interpreter immortal increfs5,541,98020.1%5,462,78019.8%-1.4%
Allocations over 4 kbytes3,3600.0%3,4000.0%1.2%
Method cache hits9,9559,889-0.7%
Interpreter mortal increfs12,868,76046.7%12,944,46047.0%0.6%
Interpreter mortal decrefs13,365,36047.6%13,438,60047.6%0.5%
Mortal decrefs8,520,48030.3%8,524,75330.2%0.1%
Mortal increfs5,206,21218.9%5,208,04418.9%0.0%
Immortal increfs3,921,40214.2%3,922,38614.2%0.0%
Immortal decrefs2,986,83410.6%2,987,49910.6%0.0%
Method cache dunder hits958,988959,0070.0%
Allocations211,656,42099.3%211,656,74099.3%0.0%
Frees212,079,986212,079,984-0.0%
Allocations from freelist1,431,6200.7%1,431,6200.7%0.0%
Frees to freelist1,430,5801,430,5800.0%
Allocations to 512 bytes211,650,92099.3%211,650,92099.3%0.0%
Inline values1,9401,9400.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-regex_v8-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-regex_v8-vs-base.md new file mode 100644 index 00000000..44d8fd15 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-regex_v8-vs-base.md @@ -0,0 +1,3522 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD9,028,28050,420-99.4%
FOR_ITER_RANGE8,940,38090,300-99.0%
BINARY_SLICE12,900800-93.8%
STORE_FAST10,581,5001,009,580-90.5%
EXTENDED_ARG531,28079,000-85.1%
CALL_NON_PY_GENERAL15,655,7403,148,140-79.9%
LOAD_ATTR_METHOD_NO_DICT15,883,5403,297,580-79.2%
LIST_APPEND4,240920-78.3%
POP_TOP16,859,2203,788,140-77.5%
CALL_PY_GENERAL1,492,320335,320-77.5%
STORE_SUBSCR22,5605,400-76.1%
LOAD_CONST45,598,12011,279,360-75.3%
BINARY_SUBSCR_LIST_INT20,027,3605,048,720-74.8%
UNPACK_EX748,800210,080-71.9%
CALL_KW_NON_PY748,860211,400-71.8%
IMPORT_NAME750,200212,740-71.6%
LOAD_GLOBAL_MODULE28,575,9008,144,920-71.5%
FOR_ITER51,84014,980-71.1%
TO_BOOL767,160227,080-70.4%
TO_BOOL_LIST767,120228,020-70.3%
CONTAINS_OP69,12020,640-70.1%
STORE_FAST_STORE_FAST854,040260,160-69.5%
CALL_ISINSTANCE1,832,940581,220-68.3%
CALL_TYPE_11,746,840571,660-67.3%
FOR_ITER_LIST82,54027,020-67.3%
BINARY_SUBSCR_DICT1,764,920578,520-67.2%
TO_BOOL_BOOL1,881,640622,020-66.9%
NOP1,863,120623,340-66.5%
POP_JUMP_IF_FALSE4,756,4601,594,360-66.5%
LOAD_GLOBAL_BUILTIN4,605,5201,556,540-66.2%
BUILD_TUPLE1,809,480612,760-66.1%
CONTAINS_OP_SET98,80033,480-66.1%
IS_OP949,520326,800-65.6%
LOAD_FAST_LOAD_FAST4,539,3801,572,880-65.4%
PUSH_NULL2,015,380729,620-63.8%
LOAD_ATTR_MODULE2,768,2201,008,940-63.6%
CONTAINS_OP_DICT23,8408,740-63.3%
FOR_ITER_TUPLE12,4604,600-63.1%
BINARY_OP_ADD_INT122,98049,240-60.0%
RESUME_CHECK4,348,3201,835,780-57.8%
LOAD_FAST13,048,6605,688,280-56.4%
BINARY_SUBSCR_GETITEM41,96018,780-55.2%
BINARY_SUBSCR_STR_INT79,74036,140-54.7%
RETURN_VALUE4,217,2001,977,980-53.1%
CALL_PY_EXACT_ARGS2,400,8201,152,280-52.0%
MAP_ADD2,0401,000-51.0%
CALL_BOUND_METHOD_EXACT_ARGS77,72038,780-50.1%
COMPARE_OP_FLOAT12060-50.0%
UNPACK_SEQUENCE_TWO_TUPLE123,02069,180-43.8%
CALL_BUILTIN_FAST_WITH_KEYWORDS28,62016,960-40.7%
CALL_LIST_APPEND37,32022,600-39.4%
COMPARE_OP_STR122,80075,400-38.6%
LOAD_ATTR_METHOD_WITH_VALUES69,52042,700-38.6%
LOAD_NAME17,64011,320-35.8%
LOAD_FAST_AND_CLEAR1,360880-35.3%
STORE_ATTR_INSTANCE_VALUE167,960111,360-33.7%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS164,080109,720-33.1%
LOAD_ATTR_SLOT8,1605,500-32.6%
TO_BOOL_INT129,04087,000-32.6%
STORE_FAST_LOAD_FAST11,7208,080-31.1%
CALL_METHOD_DESCRIPTOR_FAST18,44012,800-30.6%
CALL_BUILTIN_O159,600111,420-30.2%
LOAD_SPECIAL1,360960-29.4%
TO_BOOL_NONE17,58012,720-27.6%
STORE_SUBSCR_LIST_INT17,94013,080-27.1%
BINARY_OP_ADD_UNICODE5,8204,260-26.8%
BINARY_OP121,90090,340-25.9%
RETURN_CONST140,560105,180-25.2%
COMPARE_OP_INT40,08030,280-24.5%
LOAD_ATTR_INSTANCE_VALUE934,640740,620-20.8%
CALL_METHOD_DESCRIPTOR_O12,1809,660-20.7%
UNARY_NOT10,8808,720-19.9%
POP_JUMP_IF_TRUE125,700100,780-19.8%
SWAP7,1805,820-18.9%
STORE_NAME6,4805,260-18.8%
BINARY_OP_SUBTRACT_INT39,16031,920-18.5%
BUILD_STRING1,5401,280-16.9%
CALL_ALLOC_AND_ENTER_INIT15,82013,300-15.9%
COPY32,54028,500-12.4%
BUILD_LIST39,16034,440-12.1%
POP_JUMP_IF_NOT_NONE323,200287,340-11.1%
STORE_SUBSCR_DICT8,1007,220-10.9%
STORE_ATTR960860-10.4%
TO_BOOL_STR12,68011,360-10.4%
CALL_BUILTIN_FAST2,1801,980-9.2%
CALL_LEN97,68090,080-7.8%
FORMAT_SIMPLE5,0204,660-7.2%
JUMP_FORWARD46,52043,280-7.0%
CALL_METHOD_DESCRIPTOR_NOARGS3,7403,480-7.0%
GET_ITER92,18085,860-6.9%
CALL_BUILTIN_CLASS50,72047,660-6.0%
LOAD_ATTR639,800602,920-5.8%
BINARY_SUBSCR95,40093,120-2.4%
POP_JUMP_IF_NONE282,180279,560-0.9%
BINARY_SUBSCR_TUPLE_INT28,94028,840-0.3%
INTERPRETER_EXIT299,620299,6200.0%
LOAD_GLOBAL94,24094,2400.0%
CALL54,28054,2800.0%
EXIT_INIT_CHECK15,82015,8200.0%
COMPARE_OP11,98011,9800.0%
LOAD_ATTR_PROPERTY9,1209,1200.0%
UNPACK_SEQUENCE_TUPLE7,1807,1800.0%
BUILD_MAP6,3206,3200.0%
CHECK_EXC_MATCH5,8405,8400.0%
POP_EXCEPT5,8405,8400.0%
PUSH_EXC_INFO5,8405,8400.0%
BINARY_OP_MULTIPLY_INT5,3805,3800.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK5,1605,1600.0%
BINARY_OP_INPLACE_ADD_UNICODE4,8804,8800.0%
CALL_TUPLE_12,9002,9000.0%
UNARY_INVERT1,9601,9600.0%
LOAD_FAST_CHECK1,6201,6200.0%
LOAD_DEREF1,3801,3800.0%
MAKE_FUNCTION1,1601,1600.0%
CALL_FUNCTION_EX1,0401,0400.0%
RESUME8208200.0%
CALL_KW_PY6806800.0%
COPY_FREE_VARS6006000.0%
SET_FUNCTION_ATTRIBUTE4604600.0%
MAKE_CELL4404400.0%
STORE_SLICE4004000.0%
STORE_DEREF3203200.0%
DICT_MERGE3003000.0%
LIST_EXTEND2602600.0%
YIELD_VALUE2202200.0%
DELETE_SUBSCR2002000.0%
CALL_STR_12002000.0%
UNARY_NEGATIVE1801800.0%
CALL_INTRINSIC_11601600.0%
JUMP_BACKWARD_NO_INTERRUPT1601600.0%
LOAD_SUPER_ATTR_METHOD1601600.0%
RETURN_GENERATOR1401400.0%
STORE_ATTR_SLOT1401400.0%
IMPORT_FROM1001000.0%
CALL_KW80800.0%
DELETE_NAME80800.0%
LOAD_BUILD_CLASS60600.0%
BUILD_SET60600.0%
UNPACK_SEQUENCE60600.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
LOAD_ATTR_CLASS60600.0%
LOAD_ATTR_METHOD_LAZY_DICT60600.0%
LOAD_LOCALS40400.0%
DICT_UPDATE40400.0%
ENTER_EXECUTOR312,800
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
178,28059.4%95,74051.5%-46.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
120,26040.1%88,78047.7%-26.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,34081.7%1,26080.8%-6.0%
Success30018.3%30019.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
floor divide403.0%201.6%-50.0%
and int68050.7%64050.8%-5.9%
or24017.9%24019.0%0.0%
and different types1209.0%1209.5%0.0%
add other806.0%806.3%0.0%
multiply different types806.0%806.3%0.0%
remainder806.0%806.3%0.0%
add different types201.5%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
12,900100.0%800100.0%-93.8%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
21,932,92099.5%5,701,00098.2%-74.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
54,1200.2%51,8600.9%-4.2%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
10,0000.0%10,0000.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure800.2%600.1%-25.0%
Success41,40099.8%41,40099.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
string slice4050.0%4066.7%0.0%
other2025.0%2033.3%0.0%
list slice2025.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6,728,00099.2%2,823,96098.1%-58.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
27,6200.4%27,6201.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1,5200.0%1,5200.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success26,720100.0%26,700100.0%-0.1%
Failure00.0%00.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6075.0%6075.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
160,14091.5%102,88087.4%-35.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
11,4606.5%11,4609.7%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
2,8601.6%2,8602.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success28048.3%28048.3%0.0%
Failure30051.7%30051.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
different types14046.7%14046.7%0.0%
other6020.0%6020.0%0.0%
big int6020.0%6020.0%0.0%
tuple206.7%206.7%0.0%
list206.7%206.7%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
68,90035.9%20,44032.5%-70.3%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
122,64064.0%42,22067.2%-65.6%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure18081.8%16080.0%-11.1%
Success4018.2%4020.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
str16088.9%14087.5%-12.5%
list2011.1%2012.5%0.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1,0600.0%4,1403.0%290.6%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
9,034,32099.4%117,78086.0%-98.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
49,7800.5%13,0409.5%-73.8%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure70033.7%58029.0%-17.1%
Success1,38066.3%1,42071.0%2.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
dict items12017.1%8013.8%-33.3%
seq iter20028.6%16027.6%-20.0%
itertools18025.7%16027.6%-11.1%
set12017.1%12020.7%0.0%
dict keys405.7%406.9%0.0%
enumerate202.9%
map202.9%203.4%0.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
19,678,34096.9%5,109,60089.4%-74.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
608,3203.0%571,50010.0%-6.1%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1400.0%1400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure7602.4%7002.2%-7.9%
Success30,72097.6%30,72097.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
not managed dict12015.8%10014.3%-16.7%
mutable class14018.4%12017.1%-14.3%
method26034.2%24034.3%-7.7%
metaclass attribute16021.1%16022.9%0.0%
class attr simple405.3%405.7%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
33,155,98099.6%9,676,02098.8%-70.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
47,1800.1%47,1800.5%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
25,4400.1%25,4400.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success47,520100.0%47,520100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_SUPER_ATTR + +
+ specialization stats for LOAD_SUPER_ATTR family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
160100.0%160100.0%0.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
168,10099.4%111,50099.2%-33.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
7600.4%6600.6%-13.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success18090.0%18090.0%0.0%
Failure2010.0%2010.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
not managed dict20100.0%20100.0%0.0%
+ + +
+ +### STORE_SLICE + +
+ specialization stats for STORE_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400100.0%400100.0%0.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
22,34046.0%5,22020.3%-76.6%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
26,04053.6%20,30079.0%-22.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure14063.6%10055.6%-28.6%
Success8036.4%8044.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
bytearray int10071.4%6060.0%-40.0%
out of range2014.3%2020.0%0.0%
py simple2014.3%2020.0%0.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
765,86021.4%225,96019.0%-70.5%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,802,40078.4%956,62080.5%-65.9%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
5,6600.2%4,5000.4%-20.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure94065.3%78062.9%-17.0%
Success50034.7%46037.1%-8.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple42044.7%28035.9%-33.3%
mapping12012.8%10012.8%-16.7%
other22023.4%22028.2%0.0%
number10010.6%10012.8%0.0%
dict808.5%8010.3%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
130,200100.0%76,36099.9%-41.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.0%400.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
116,285,72048.9%30,326,68047.9%-73.9%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
119,653,22050.3%31,693,22050.1%-73.5%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
1,942,6800.8%1,217,1801.9%-37.3%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
46,6800.0%48,6000.1%4.1%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
STORE_SUBSCR22,3401.2%5,2200.5%-76.6%
FOR_ITER49,7802.8%13,0401.2%-73.8%
TO_BOOL765,86042.8%225,96021.2%-70.5%
CONTAINS_OP68,9003.8%20,4401.9%-70.3%
BINARY_OP120,2606.7%88,7808.3%-26.2%
LOAD_ATTR608,32034.0%571,50053.7%-6.1%
BINARY_SUBSCR54,1203.0%51,8604.9%-4.2%
LOAD_GLOBAL47,1802.6%47,1804.4%0.0%
CALL27,6201.5%27,6202.6%0.0%
BINARY_SLICE12,9000.7%
COMPARE_OP11,4601.1%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
FOR_ITER_LIST1,0602.3%4,1408.5%290.6%
TO_BOOL_NONE4,0608.7%2,9006.0%-28.6%
LOAD_GLOBAL_MODULE25,00053.6%25,00051.4%0.0%
BINARY_SUBSCR_LIST_INT7,12015.3%7,12014.7%0.0%
BINARY_SUBSCR_STR_INT2,8806.2%2,8805.9%0.0%
COMPARE_OP_STR2,8606.1%2,8605.9%0.0%
TO_BOOL_INT1,0602.3%1,0602.2%0.0%
CALL_BUILTIN_FAST7001.5%7001.4%0.0%
TO_BOOL_LIST4801.0%4801.0%0.0%
LOAD_GLOBAL_BUILTIN4400.9%4400.9%0.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault306,6007.0%306,6007.0%0.0%
Calls to Python functions inlined4,042,68093.0%4,042,68093.0%0.0%
Calls via PyEval_EvalFrame (total)306,6007.0%306,6007.0%0.0%
Calls via PyEval_EvalFrame (vector)306,2407.0%306,2407.0%0.0%
Calls via PyEval_EvalFrame (generator)3600.0%3600.0%0.0%
Calls via PyEval_EvalFrame (legacy)800.0%800.0%0.0%
Calls via PyEval_EvalFrame (function vectorcall)306,1007.0%306,1007.0%0.0%
Calls via PyEval_EvalFrame (build class)600.0%600.0%0.0%
Calls via PyEval_EvalFrame (slot)44,9801.0%44,9801.0%0.0%
Calls via PyEval_EvalFrame (function ex)3200.0%3200.0%0.0%
Calls via PyEval_EvalFrame (api)1,6800.0%1,6800.0%0.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created775,72017.8%775,72017.8%0.0%
Frames pushed4,364,740100.4%4,364,740100.4%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Interpreter immortal increfs44,401,14014.8%21,693,9207.8%-51.1%
Method cache dunder misses727652-10.3%
Method cache misses2,8152,8982.9%
Allocations over 4 kbytes45,8400.1%46,3000.1%1.0%
Allocations to 4 kbytes314,8000.5%316,9200.5%0.7%
Interpreter immortal decrefs51,290,26015.3%51,611,64015.4%0.6%
Method cache collisions3,1543,135-0.6%
Interpreter mortal increfs105,020,74035.0%104,441,56037.8%-0.6%
Interpreter mortal decrefs127,171,00038.0%126,565,78037.8%-0.5%
Mortal decrefs92,595,83627.6%92,654,81727.7%0.1%
Mortal increfs79,554,62226.5%79,584,61728.8%0.0%
Immortal increfs70,879,96323.6%70,905,76825.6%0.0%
Immortal decrefs63,912,17019.1%63,935,27319.1%0.0%
Method cache hits1,398,1451,398,002-0.0%
Allocations50,274,34083.6%50,277,10083.6%0.0%
Frees70,341,51870,344,4700.0%
Allocations from freelist9,840,40016.4%9,840,52016.4%0.0%
Frees to freelist9,843,1209,843,2400.0%
Method cache dunder hits6,357,7536,357,8280.0%
Allocations to 512 bytes49,913,70083.0%49,913,88083.0%0.0%
Inline values17,30017,3000.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
02020 / 0 !!
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
02020 / 0 !!
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-richards-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-richards-vs-base.md new file mode 100644 index 00000000..06cb296c --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-richards-vs-base.md @@ -0,0 +1,2257 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
FOR_ITER_RANGE3,724,18091,560-97.5%
STORE_SUBSCR_LIST_INT2,980,44096,220-96.8%
JUMP_BACKWARD37,215,6801,476,000-96.0%
POP_JUMP_IF_NONE44,918,0802,849,240-93.7%
UNARY_NOT39,780,9602,563,180-93.6%
POP_JUMP_IF_TRUE55,180,4804,190,600-92.4%
BINARY_OP_SUBTRACT_INT6,178,520469,240-92.4%
COPY118,888,1609,542,300-92.0%
CALL_ISINSTANCE21,052,7202,460,680-88.3%
LOAD_GLOBAL_BUILTIN21,053,0802,461,040-88.3%
BINARY_OP8,002,520943,480-88.2%
SWAP18,194,5602,168,480-88.1%
GET_ITER745,04090,720-87.8%
LOAD_FAST_LOAD_FAST40,939,8405,420,040-86.8%
NOP3,718,160588,160-84.2%
LOAD_ATTR_METHOD_WITH_VALUES155,455,76026,220,300-83.1%
CALL_PY_EXACT_ARGS154,286,66026,087,440-83.1%
RESUME_CHECK154,031,02026,066,820-83.1%
POP_TOP86,002,96016,561,540-80.7%
COMPARE_OP_INT28,265,7805,730,260-79.7%
LOAD_ATTR_INSTANCE_VALUE323,334,64068,748,300-78.7%
TO_BOOL_BOOL274,862,74058,481,920-78.7%
LOAD_GLOBAL_MODULE118,917,88025,537,560-78.5%
BINARY_OP_ADD_INT19,346,7804,278,600-77.9%
LOAD_FAST741,180,480202,559,260-72.7%
POP_JUMP_IF_FALSE208,167,60057,462,700-72.4%
BINARY_SUBSCR_LIST_INT13,614,3604,121,320-69.7%
LOAD_CONST111,925,52036,057,820-67.8%
POP_JUMP_IF_NOT_NONE61,509,76019,883,360-67.7%
STORE_FAST133,579,60049,369,160-63.0%
STORE_ATTR_INSTANCE_VALUE119,225,20051,513,860-56.8%
RETURN_VALUE154,028,680107,179,360-30.4%
JUMP_FORWARD8,557,1207,830,880-8.5%
EXTENDED_ARG960940-2.1%
RETURN_CONST10,88010,8800.0%
EXIT_INIT_CHECK7,8007,8000.0%
CALL_ALLOC_AND_ENTER_INIT7,8007,8000.0%
STORE_ATTR4,5604,5600.0%
LOAD_ATTR3,8403,8400.0%
LOAD_GLOBAL3,5203,5200.0%
CALL3,0403,0400.0%
BUILD_LIST2,5602,5600.0%
LOAD_ATTR_CLASS1,8401,8400.0%
INTERPRETER_EXIT8408400.0%
RESUME7407400.0%
PUSH_NULL6406400.0%
TO_BOOL6006000.0%
CALL_NON_PY_GENERAL4804800.0%
COMPARE_OP4404400.0%
CALL_BUILTIN_CLASS3603600.0%
LOAD_DEREF1601600.0%
FOR_ITER1201200.0%
LOAD_ATTR_MODULE1201200.0%
BINARY_SUBSCR80800.0%
STORE_SUBSCR80800.0%
CALL_FUNCTION_EX80800.0%
COPY_FREE_VARS80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
ENTER_EXECUTOR49,352,140
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
7,999,52023.9%942,20016.6%-88.2%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
25,525,36076.1%4,747,90083.4%-81.4%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure2,84094.7%1,12087.5%-60.6%
Success1605.3%16012.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
and int98034.5%28025.0%-71.4%
floor divide1,16040.8%48042.9%-58.6%
xor58020.4%24021.4%-58.6%
multiply different types1204.2%12010.7%0.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
13,614,360100.0%4,121,320100.0%-69.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.0%400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
14,014,7208.0%1,639,8605.7%-88.3%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
161,332,82092.0%26,916,42094.2%-83.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,5200.0%1,5200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success265,940100.0%32,460100.0%-87.8%
Failure00.0%00.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
28,265,780100.0%5,730,260100.0%-79.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2200.0%2200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success220100.0%220100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
3,724,180100.0%91,56099.9%-97.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
600.0%600.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success60100.0%60100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
201,284,48042.0%28,146,52029.6%-86.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
277,507,88058.0%66,824,04070.4%-75.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,9200.0%1,9200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success3,799,560100.0%532,860100.0%-86.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
139,970,960100.0%27,998,600100.0%-80.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,7600.0%1,7600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,760100.0%1,760100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
101,905,78085.5%40,880,10079.4%-59.9%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
17,319,42014.5%10,633,76020.6%-38.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,9200.0%2,9200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success328,00099.9%201,88099.8%-38.5%
Failure3200.1%3200.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
not in keys320100.0%320100.0%0.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,980,440100.0%96,22099.9%-96.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.0%400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
274,862,740100.0%58,481,920100.0%-78.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3000.0%3000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success300100.0%300100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
8,018,8000.2%959,7600.1%-88.0%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
232,618,6207.1%40,421,8604.6%-82.6%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
1,183,721,80036.0%261,953,92029.8%-77.9%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
1,864,557,42056.7%575,169,66065.5%-69.2%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
BINARY_OP7,999,52099.9%942,20099.1%-88.2%
STORE_ATTR2,9200.0%2,9200.3%0.0%
LOAD_ATTR1,9200.0%1,9200.2%0.0%
LOAD_GLOBAL1,7600.0%1,7600.2%0.0%
CALL1,5200.0%1,5200.2%0.0%
TO_BOOL3000.0%3000.0%0.0%
COMPARE_OP2200.0%2200.0%0.0%
FOR_ITER600.0%600.0%0.0%
BINARY_SUBSCR400.0%400.0%0.0%
STORE_SUBSCR400.0%400.0%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
CALL_PY_EXACT_ARGS14,014,7206.0%1,639,8604.1%-88.3%
LOAD_ATTR_METHOD_WITH_VALUES76,092,80032.7%8,997,78022.3%-88.2%
LOAD_ATTR_INSTANCE_VALUE125,191,68053.8%19,148,74047.4%-84.7%
STORE_ATTR_INSTANCE_VALUE17,319,4207.4%10,633,76026.3%-38.6%
CACHE00.0%00.0%
EXIT_INIT_CHECK00.0%00.0%
GET_ITER00.0%00.0%
INTERPRETER_EXIT00.0%00.0%
NOP00.0%
POP_TOP00.0%
RESUME1,7200.0%
RESUME_CHECK1,7200.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault8400.0%8400.0%0.0%
Calls to Python functions inlined154,030,920100.0%154,030,920100.0%0.0%
Calls via PyEval_EvalFrame (total)8400.0%8400.0%0.0%
Calls via PyEval_EvalFrame (vector)8400.0%8400.0%0.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)8400.0%8400.0%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)800.0%800.0%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed154,039,560100.0%154,039,560100.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache collisions1,912,10796,483-95.0%
Method cache misses1,912,67397,124-94.9%
Frees to freelist2,9405,28079.6%
Allocations from freelist3,4200.0%5,7600.0%68.4%
Immortal increfs281,633,82213.7%96,449,5064.7%-65.8%
Immortal decrefs171,444,4969.4%65,593,7793.3%-61.7%
Method cache hits216,699,42788,322,176-59.2%
Mortal increfs130,827,3936.4%80,286,6073.9%-38.6%
Interpreter mortal increfs1,182,550,44057.6%1,461,721,36071.4%23.6%
Interpreter immortal decrefs319,133,92017.5%378,169,88018.9%18.5%
Interpreter mortal decrefs1,307,605,46071.7%1,539,310,26076.8%17.7%
Mortal decrefs24,643,6001.4%21,572,4351.1%-12.5%
Interpreter immortal increfs456,486,12022.3%409,881,08020.0%-10.2%
Method cache dunder misses4344421.8%
Method cache dunder hits926918-0.9%
Frees18,882,24018,884,0270.0%
Allocations18,893,640100.0%18,895,140100.0%0.0%
Allocations to 512 bytes18,893,640100.0%18,894,040100.0%0.0%
Allocations to 4 kbytes00.0%1,1000.0%1,100 / 0 !!
Allocations over 4 kbytes00.0%00.0%
Inline values8,3208,3200.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-richards_super-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-richards_super-vs-base.md new file mode 100644 index 00000000..70aca8fb --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-richards_super-vs-base.md @@ -0,0 +1,2347 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
FOR_ITER_RANGE1,862,10091,120-95.1%
STORE_SUBSCR_LIST_INT1,490,20095,260-93.6%
JUMP_BACKWARD18,604,0001,475,640-92.1%
POP_JUMP_IF_NONE22,455,2002,848,860-87.3%
UNARY_NOT19,888,5602,562,500-87.1%
BINARY_OP_SUBTRACT_INT3,089,240469,160-84.8%
POP_JUMP_IF_TRUE27,586,4004,189,980-84.8%
COPY59,438,3209,540,680-83.9%
CALL_ISINSTANCE10,526,3202,460,420-76.6%
LOAD_GLOBAL_BUILTIN21,053,7204,921,920-76.6%
COPY_FREE_VARS10,527,4402,461,320-76.6%
LOAD_SUPER_ATTR_METHOD10,527,2002,461,300-76.6%
LOAD_DEREF10,527,5202,461,620-76.6%
RETURN_CONST10,531,8402,465,940-76.6%
BINARY_OP4,001,820942,000-76.5%
SWAP9,097,2802,168,100-76.2%
GET_ITER372,56090,560-75.7%
LOAD_FAST_LOAD_FAST41,521,76010,329,460-75.1%
POP_TOP53,524,08013,678,040-74.4%
CALL_PY_EXACT_ARGS87,665,46023,201,480-73.5%
RESUME_CHECK87,537,72023,175,700-73.5%
LOAD_ATTR_METHOD_WITH_VALUES77,723,80020,859,240-73.2%
TO_BOOL_BOOL137,415,86037,713,380-72.6%
LOAD_GLOBAL_MODULE59,453,48017,546,640-70.5%
LOAD_ATTR_INSTANCE_VALUE161,655,26048,961,740-69.7%
COMPARE_OP_INT14,132,8204,340,280-69.3%
BINARY_OP_ADD_INT9,673,3403,021,380-68.8%
NOP1,859,120588,140-68.4%
POP_JUMP_IF_FALSE104,074,24035,305,480-66.1%
LOAD_FAST381,100,640135,868,620-64.3%
LOAD_CONST55,963,76023,264,260-58.4%
BINARY_SUBSCR_LIST_INT6,807,1602,864,180-57.9%
POP_JUMP_IF_NOT_NONE30,754,88013,153,100-57.2%
STORE_FAST66,786,16030,719,180-54.0%
STORE_ATTR_INSTANCE_VALUE70,270,34033,620,380-52.2%
RETURN_VALUE77,010,28056,479,300-26.7%
JUMP_FORWARD4,278,5603,978,540-7.0%
STORE_ATTR4,8804,8800.0%
LOAD_ATTR3,6803,6800.0%
LOAD_GLOBAL3,6803,6800.0%
EXIT_INIT_CHECK3,6403,6400.0%
CALL_ALLOC_AND_ENTER_INIT3,6403,6400.0%
CALL3,2003,2000.0%
BUILD_LIST1,2801,2800.0%
RESUME7607600.0%
INTERPRETER_EXIT6806800.0%
TO_BOOL6006000.0%
PUSH_NULL4804800.0%
EXTENDED_ARG4804800.0%
COMPARE_OP4404400.0%
LOAD_SUPER_ATTR3203200.0%
CALL_NON_PY_GENERAL3203200.0%
CALL_BUILTIN_CLASS2002000.0%
FOR_ITER1201200.0%
LOAD_ATTR_MODULE1201200.0%
BINARY_SUBSCR80800.0%
STORE_SUBSCR80800.0%
CALL_FUNCTION_EX80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
ENTER_EXECUTOR23,023,040
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3,999,84023.9%940,74021.2%-76.5%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
12,762,64076.1%3,490,60078.7%-72.6%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,82091.9%1,10087.3%-39.6%
Success1608.1%16012.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
and int58031.9%28025.5%-51.7%
floor divide76041.8%48043.6%-36.8%
xor38020.9%24021.8%-36.8%
multiply different types1005.5%1009.1%0.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6,807,160100.0%2,864,180100.0%-57.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.0%400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
7,010,2407.1%1,639,8206.4%-76.6%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
91,185,38092.9%24,025,92093.6%-73.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,6000.0%1,6000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success133,860100.0%32,540100.0%-75.7%
Failure00.0%00.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
14,132,820100.0%4,340,280100.0%-69.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2200.0%2200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success220100.0%220100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,862,100100.0%91,12099.9%-95.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
600.0%600.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success60100.0%60100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
100,655,84042.0%22,931,14032.8%-77.2%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
138,723,34058.0%46,889,96067.2%-66.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,8400.0%1,8400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,900,780100.0%434,380100.0%-77.1%
Failure00.0%00.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
80,507,200100.0%22,468,560100.0%-72.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,8400.0%1,8400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,840100.0%1,840100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_SUPER_ATTR + +
+ specialization stats for LOAD_SUPER_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
10,527,200100.0%2,461,300100.0%-76.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1600.0%1600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success160100.0%160100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
15,668,12022.3%7,480,46022.2%-52.3%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
54,602,22077.7%26,139,92077.7%-52.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3,1600.0%3,1600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success296,78099.9%142,34099.7%-52.0%
Failure3600.1%3600.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
not in keys360100.0%360100.0%0.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,490,200100.0%95,26099.9%-93.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.0%400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
137,415,860100.0%37,713,380100.0%-72.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3000.0%3000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success300100.0%300100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
4,018,9000.2%959,0800.2%-76.1%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
123,334,2007.0%32,052,1605.3%-74.0%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
637,554,16036.0%193,755,76032.1%-69.6%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
1,005,910,00056.8%376,659,76062.4%-62.6%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
BINARY_OP3,999,84099.8%940,74099.0%-76.5%
STORE_ATTR3,1600.1%3,1600.3%0.0%
LOAD_ATTR1,8400.0%1,8400.2%0.0%
LOAD_GLOBAL1,8400.0%1,8400.2%0.0%
CALL1,6000.0%1,6000.2%0.0%
TO_BOOL3000.0%3000.0%0.0%
COMPARE_OP2200.0%2200.0%0.0%
LOAD_SUPER_ATTR1600.0%1600.0%0.0%
FOR_ITER600.0%600.0%0.0%
BINARY_SUBSCR400.0%400.0%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
LOAD_ATTR_METHOD_WITH_VALUES38,054,38030.9%8,160,50025.5%-78.6%
CALL_PY_EXACT_ARGS7,010,2405.7%1,639,8205.1%-76.6%
LOAD_ATTR_INSTANCE_VALUE62,601,46050.8%14,770,64046.1%-76.4%
STORE_ATTR_INSTANCE_VALUE15,668,12012.7%7,480,46023.3%-52.3%
CACHE00.0%00.0%
EXIT_INIT_CHECK00.0%00.0%
GET_ITER00.0%00.0%
INTERPRETER_EXIT00.0%00.0%
NOP00.0%
POP_TOP00.0%
RESUME7400.0%
RESUME_CHECK7400.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault6800.0%6800.0%0.0%
Calls to Python functions inlined87,537,800100.0%87,537,800100.0%0.0%
Calls via PyEval_EvalFrame (total)6800.0%6800.0%0.0%
Calls via PyEval_EvalFrame (vector)6800.0%6800.0%0.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)6800.0%6800.0%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)800.0%800.0%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed87,542,120100.0%87,542,120100.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Frees to freelist1,6602,70062.7%
Immortal increfs158,628,03713.3%61,237,5335.3%-61.4%
Immortal decrefs103,516,3549.6%42,556,7013.7%-58.9%
Method cache hits115,909,48351,604,508-55.5%
Method cache collisions422,279192,202-54.5%
Method cache misses422,997192,872-54.4%
Allocations from freelist2,1400.0%3,1800.0%48.6%
Mortal increfs105,654,7008.9%76,612,2796.7%-27.5%
Interpreter mortal increfs661,834,14055.7%785,405,44068.3%18.7%
Mortal decrefs42,036,3463.9%34,286,0153.0%-18.4%
Interpreter immortal decrefs194,243,10018.1%221,410,16019.5%14.0%
Interpreter mortal decrefs734,888,02068.4%837,169,48073.7%13.9%
Interpreter immortal increfs262,889,08022.1%226,983,16019.7%-13.7%
Method cache dunder misses4004020.5%
Method cache dunder hits640638-0.3%
Frees9,441,5859,443,3810.0%
Allocations9,447,080100.0%9,448,520100.0%0.0%
Allocations to 512 bytes9,447,080100.0%9,447,460100.0%0.0%
Allocations to 4 kbytes00.0%1,0600.0%1,060 / 0 !!
Allocations over 4 kbytes00.0%00.0%
Inline values4,1604,1600.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-scimark-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-scimark-vs-base.md new file mode 100644 index 00000000..6707d4d7 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-scimark-vs-base.md @@ -0,0 +1,2527 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD261,378,64011,940-100.0%
FOR_ITER_RANGE263,733,14059,360-100.0%
FOR_ITER_GEN800,060360-100.0%
STORE_FAST_LOAD_FAST163,840380-99.8%
GET_ITER11,427,28051,040-99.6%
BINARY_SUBSCR_LIST_INT80,435,080802,360-99.0%
CALL_ISINSTANCE80,450,280817,560-99.0%
LOAD_GLOBAL_BUILTIN205,779,5407,034,880-96.6%
STORE_FAST895,868,72043,366,380-95.2%
EXTENDED_ARG168,0008,620-94.9%
TO_BOOL_BOOL113,414,0606,145,420-94.6%
BINARY_OP_MULTIPLY_INT140,368,5607,735,820-94.5%
BINARY_OP49,584,1602,747,560-94.5%
POP_TOP825,36059,240-92.8%
BINARY_OP_ADD_INT375,766,96029,455,500-92.2%
RESUME_CHECK206,446,28021,505,360-89.6%
LOAD_ATTR_MODULE240,84025,680-89.3%
BINARY_SUBSCR843,201,34090,280,760-89.3%
BUILD_LIST17,5201,900-89.2%
PUSH_NULL162,08018,640-88.5%
CALL_NON_PY_GENERAL17,7402,120-88.0%
CALL_BUILTIN_CLASS44,474,3805,390,420-87.9%
LOAD_FAST_LOAD_FAST1,290,995,760161,423,140-87.5%
POP_JUMP_IF_FALSE421,478,80052,855,760-87.5%
BINARY_OP_ADD_FLOAT297,543,32038,759,200-87.0%
LOAD_ATTR_INSTANCE_VALUE429,758,68058,030,820-86.5%
LOAD_CONST650,909,44088,838,160-86.4%
LOAD_FAST1,886,223,840258,152,740-86.3%
COMPARE_OP_INT275,100,32041,423,880-84.9%
BINARY_OP_MULTIPLY_FLOAT414,709,10063,409,340-84.7%
COMPARE_OP32,981,6405,287,600-84.0%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES49,469,3407,977,760-83.9%
STORE_ATTR_INSTANCE_VALUE65,930,24010,638,500-83.9%
LOAD_ATTR_METHOD_WITH_VALUES79,063,42012,968,540-83.6%
CALL_PY_EXACT_ARGS79,095,74012,989,920-83.6%
JUMP_FORWARD96,076,40015,987,320-83.4%
LOAD_GLOBAL_MODULE290,32048,520-83.3%
STORE_FAST_STORE_FAST79,871,12013,768,700-82.8%
STORE_SUBSCR271,246,92049,005,500-81.9%
UNPACK_SEQUENCE_TWO_TUPLE46,907,1208,491,840-81.9%
FOR_ITER9,5001,720-81.9%
BINARY_OP_SUBTRACT_FLOAT205,923,08039,254,160-80.9%
BINARY_OP_SUBTRACT_INT85,623,00017,736,140-79.3%
COPY325,750,40068,760,640-78.9%
SWAP325,758,72068,768,960-78.9%
POP_JUMP_IF_TRUE16,404,0008,397,340-48.8%
COMPARE_OP_FLOAT16,395,9608,395,960-48.8%
LIST_APPEND179,84092,800-48.4%
BINARY_SUBSCR_GETITEM118,050,82083,313,300-29.4%
RETURN_VALUE197,123,880139,120,200-29.4%
CALL_BUILTIN_O564,180420,660-25.4%
CALL_BUILTIN_FAST_WITH_KEYWORDS320240-25.0%
EXIT_INIT_CHECK440360-18.2%
CALL_ALLOC_AND_ENTER_INIT440360-18.2%
BUILD_TUPLE47,699,20039,217,640-17.8%
RETURN_CONST8,523,6808,523,520-0.0%
INTERPRETER_EXIT8,498,8408,498,8400.0%
BINARY_SUBSCR_TUPLE_INT1,599,9601,599,9600.0%
YIELD_VALUE800,000800,0000.0%
STORE_SUBSCR_LIST_INT15,18015,1800.0%
CALL4,4004,4000.0%
LOAD_GLOBAL3,9603,9600.0%
LOAD_ATTR3,9203,9200.0%
STORE_ATTR1,4401,4400.0%
LOAD_DEREF1,2001,2000.0%
RESUME8408400.0%
CALL_FUNCTION_EX8008000.0%
NOP4004000.0%
CALL_INTRINSIC_14004000.0%
COPY_FREE_VARS4004000.0%
LIST_EXTEND4004000.0%
LOAD_FAST_AND_CLEAR2402400.0%
POP_JUMP_IF_NONE2402400.0%
TO_BOOL2002000.0%
UNPACK_SEQUENCE1601600.0%
END_FOR80800.0%
RETURN_GENERATOR80800.0%
ENTER_EXECUTOR127,047,840
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
49,563,4203.2%2,740,2001.4%-94.5%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,519,934,02096.8%196,350,16098.6%-87.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure18,28088.1%4,90066.6%-73.2%
Success2,46011.9%2,46033.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
rshift4,34023.7%2404.9%-94.5%
lshift4,50024.6%3807.8%-91.6%
add different types4,90026.8%1,30026.5%-73.5%
multiply different types1,5408.4%94019.2%-39.0%
remainder8804.8%54011.0%-38.6%
true divide other9205.0%60012.2%-34.8%
floor divide5002.7%3406.9%-32.0%
true divide float5403.0%4208.6%-22.2%
true divide different types1600.9%1402.9%-12.5%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
842,988,06080.8%90,253,74051.3%-89.3%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
200,085,86019.2%85,715,62048.7%-57.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure212,90099.8%26,64098.6%-87.5%
Success3800.2%3801.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
array int212,880100.0%26,62099.9%-87.5%
array slice200.0%200.1%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
204,585,340100.0%19,619,160100.0%-90.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,2000.0%2,2000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success2,200100.0%2,200100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
32,972,36010.2%5,285,2209.6%-84.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
291,496,28089.8%49,819,84090.4%-82.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure8,76094.4%1,86078.2%-78.8%
Success5205.6%52021.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
float long8,760100.0%1,860100.0%-78.8%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
264,533,200100.0%59,72097.2%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
8,7200.0%1,0201.7%-88.3%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure14017.9%608.6%-57.1%
Success64082.1%64091.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
zip140100.0%60100.0%-57.1%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
558,532,280100.0%79,002,800100.0%-85.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,9600.0%1,9600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,960100.0%1,960100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
206,069,860100.0%7,083,40099.9%-96.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,9800.0%1,9800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,980100.0%1,980100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
65,930,240100.0%10,638,500100.0%-83.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
7200.0%7200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success720100.0%720100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
271,175,060100.0%48,989,64099.9%-81.9%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
15,1800.0%15,1800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure71,840100.0%15,84099.9%-78.0%
Success200.0%200.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
array int68,96096.0%13,04082.3%-81.1%
array slice1600.2%800.5%-50.0%
py simple2,7203.8%2,72017.2%0.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
113,414,060100.0%6,145,420100.0%-94.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1000.0%1000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success100100.0%100100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
46,907,120100.0%8,491,840100.0%-81.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
800.0%800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success80100.0%80100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
1,197,037,64010.5%147,337,2208.5%-87.7%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
3,677,967,46032.3%484,447,92027.9%-86.8%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
6,526,310,88057.2%1,103,777,18063.6%-83.1%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
00.0%1,2000.0%1,200 / 0 !!
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
BINARY_OP49,563,4204.1%2,740,2001.9%-94.5%
BINARY_SUBSCR842,988,06070.4%90,253,74061.3%-89.3%
FOR_ITER8,7200.0%1,0200.0%-88.3%
COMPARE_OP32,972,3602.8%5,285,2203.6%-84.0%
STORE_SUBSCR271,175,06022.7%48,989,64033.3%-81.9%
CALL2,2000.0%2,2000.0%0.0%
LOAD_GLOBAL1,9800.0%1,9800.0%0.0%
LOAD_ATTR1,9600.0%1,9600.0%0.0%
STORE_ATTR7200.0%7200.0%0.0%
TO_BOOL1000.0%1000.0%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
RESUME1,20050.0%
RESUME_CHECK1,20050.0%
CACHE00.0%
END_FOR00.0%
EXIT_INIT_CHECK00.0%
GET_ITER00.0%
INTERPRETER_EXIT00.0%
NOP00.0%
POP_TOP00.0%
PUSH_NULL00.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to Python functions inlined197,948,36095.9%181,948,12095.5%-8.1%
Frames pushed205,647,56099.6%189,647,24099.6%-7.8%
Calls to PyEval_EvalDefault8,498,8404.1%8,498,8404.5%0.0%
Calls via PyEval_EvalFrame (total)8,498,8404.1%8,498,8404.5%0.0%
Calls via PyEval_EvalFrame (vector)8,498,8204.1%8,498,8204.5%0.0%
Calls via PyEval_EvalFrame (generator)200.0%200.0%0.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)8,498,8204.1%8,498,8204.5%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)8,498,7004.1%8,498,7004.5%0.0%
Calls via PyEval_EvalFrame (function ex)8000.0%8000.0%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Interpreter immortal increfs2,442,937,20027.5%1,589,043,86022.3%-35.0%
Allocations from freelist1,018,734,22058.8%818,726,20057.5%-19.6%
Frees to freelist1,018,736,140818,728,120-19.6%
Mortal increfs895,036,09310.1%722,640,76510.2%-19.3%
Mortal decrefs2,024,408,85419.8%1,652,021,83918.6%-18.4%
Allocations over 4 kbytes5600.0%6600.0%17.9%
Immortal increfs1,237,127,85013.9%1,038,533,36014.6%-16.1%
Allocations to 512 bytes714,700,24041.2%606,269,12042.5%-15.2%
Allocations714,716,88041.2%606,287,68042.5%-15.2%
Frees714,714,906606,293,952-15.2%
Immortal decrefs641,208,2106.3%548,474,9676.2%-14.5%
Inline values560480-14.3%
Interpreter mortal decrefs4,912,802,24047.9%4,261,885,94047.9%-13.2%
Interpreter mortal increfs4,308,775,46048.5%3,766,296,60052.9%-12.6%
Allocations to 4 kbytes16,0800.0%17,9000.0%11.3%
Interpreter immortal decrefs2,668,277,96026.0%2,427,006,74027.3%-9.0%
Method cache collisions914895-2.1%
Method cache misses1,1701,152-1.5%
Method cache hits3,8303,8480.5%
Method cache dunder hits88,364,69988,178,440-0.2%
Method cache dunder misses481480-0.2%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files1001000.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-spectral_norm-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-spectral_norm-vs-base.md new file mode 100644 index 00000000..80505b2a --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-spectral_norm-vs-base.md @@ -0,0 +1,1834 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
POP_TOP804,0004,900.0%
BINARY_OP_ADD_FLOAT54,100,7203,440-100.0%
JUMP_BACKWARD54,507,2803,660-100.0%
BINARY_OP_MULTIPLY_FLOAT52,463,7603,860-100.0%
BINARY_OP_ADD_INT270,399,90036,300-100.0%
BINARY_OP_MULTIPLY_INT54,079,9807,260-100.0%
FOR_ITER54,520,4408,080-100.0%
LOAD_CONST216,736,24036,040-100.0%
LOAD_FAST_LOAD_FAST162,676,80027,580-100.0%
BINARY_OP109,841,38024,520-100.0%
LOAD_GLOBAL_MODULE54,088,08013,160-100.0%
UNPACK_SEQUENCE_TWO_TUPLE54,506,30014,240-100.0%
STORE_FAST_STORE_FAST54,506,48014,420-100.0%
LOAD_FAST163,515,68044,040-100.0%
CALL_PY_EXACT_ARGS54,503,84017,780-100.0%
RESUME_CHECK54,500,82017,900-100.0%
STORE_FAST54,522,72018,260-100.0%
RETURN_VALUE54,500,960428,240-99.2%
BUILD_TUPLE416,0004,980-98.8%
STORE_FAST_LOAD_FAST416,0004,980-98.8%
PUSH_NULL416,4005,380-98.7%
FOR_ITER_RANGE420,1805,460-98.7%
GET_ITER419,4409,680-97.7%
CALL_BUILTIN_CLASS422,44012,240-97.1%
LOAD_GLOBAL_BUILTIN425,68015,040-96.5%
SWAP9,6006,780-29.4%
CALL_LEN3,1802,740-13.8%
LOAD_FAST_AND_CLEAR3,2002,760-13.8%
BUILD_LIST3,3602,920-13.1%
LIST_APPEND416,000416,0000.0%
LOAD_GLOBAL8008000.0%
CALL7207200.0%
LOAD_DEREF2402400.0%
CALL_NON_PY_GENERAL2402400.0%
UNPACK_SEQUENCE2002000.0%
LOAD_ATTR_MODULE1801800.0%
CALL_FUNCTION_EX1601600.0%
RESUME1401400.0%
LOAD_ATTR1201200.0%
NOP80800.0%
CALL_INTRINSIC_180800.0%
COPY80800.0%
COPY_FREE_VARS80800.0%
LIST_EXTEND80800.0%
LOAD_FAST_CHECK80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
ENTER_EXECUTOR423,400
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
430,625,16079.6%48,68064.5%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
109,805,24020.3%23,60031.3%-100.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
419,2600.1%2,2403.0%-99.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure35,84081.4%68070.8%-98.1%
Success8,20018.6%28029.2%-96.6%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
floor divide13,40037.4%14020.6%-99.0%
true divide different types13,40037.4%14020.6%-99.0%
add different types7,84021.9%26038.2%-96.7%
multiply different types1,2003.3%14020.6%-88.3%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
54,760,92099.7%30,10089.9%-99.9%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
168,5400.3%2,6607.9%-98.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3600.0%3601.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success3,540100.0%400100.0%-88.7%
Failure00.0%00.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
54,506,54099.2%7,72057.0%-100.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
420,1800.8%5,46040.3%-98.7%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure13,84099.6%30083.3%-97.8%
Success600.4%6016.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
enumerate13,68098.8%24080.0%-98.2%
zip1601.2%6020.0%-62.5%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6020.0%6020.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
18060.0%18060.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success60100.0%60100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
54,513,760100.0%28,20097.2%-99.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4000.0%4001.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success400100.0%400100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
54,506,300100.0%14,24098.6%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1000.0%1000.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success100100.0%100100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
164,363,66010.4%34,4402.1%-100.0%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
649,327,56041.2%145,0008.8%-100.0%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
763,067,26048.4%1,454,14088.7%-99.8%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
587,8000.0%4,9000.3%-99.2%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
FOR_ITER54,506,54033.2%7,72023.9%-100.0%
BINARY_OP109,805,24066.8%23,60073.2%-100.0%
LOAD_GLOBAL4000.0%4001.2%0.0%
CALL3600.0%3601.1%0.0%
UNPACK_SEQUENCE1000.0%1000.3%0.0%
LOAD_ATTR600.0%600.2%0.0%
BINARY_SLICE00.0%00.0%
STORE_SLICE00.0%00.0%
BINARY_SUBSCR00.0%00.0%
GET_ITER00.0%00.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
BINARY_OP_ADD_FLOAT416,08070.8%2,24045.7%-99.5%
CALL_PY_EXACT_ARGS168,54028.7%2,66054.3%-98.4%
BINARY_OP_MULTIPLY_FLOAT3,1800.5%
GET_ITER00.0%00.0%
NOP00.0%00.0%
POP_TOP00.0%00.0%
PUSH_NULL00.0%00.0%
RETURN_VALUE00.0%00.0%
BUILD_LIST00.0%00.0%
BUILD_TUPLE00.0%00.0%
CALL_FUNCTION_EX00.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault00.0%00.0%
Calls to Python functions inlined54,500,960100.0%54,500,960100.0%0.0%
Calls via PyEval_EvalFrame (total)00.0%00.0%
Calls via PyEval_EvalFrame (vector)00.0%00.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)00.0%00.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)1600.0%1600.0%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed54,500,960100.0%54,500,960100.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Allocations from freelist56,733,46020.9%82,133,84027.7%44.8%
Frees to freelist56,736,56082,136,94044.8%
Interpreter immortal increfs599,671,34048.0%436,633,66040.2%-27.2%
Mortal decrefs161,404,60010.6%136,011,2208.8%-15.7%
Method cache misses202210.0%
Method cache collisions202210.0%
Interpreter mortal decrefs542,288,58035.5%594,539,18038.3%9.6%
Allocations to 4 kbytes3,2800.0%3,4600.0%5.5%
Method cache hits4038-5.0%
Interpreter mortal increfs324,378,48026.0%325,829,28030.0%0.4%
Interpreter immortal decrefs764,837,20050.1%765,260,76049.3%0.1%
Mortal increfs108,081,0408.7%108,085,2409.9%0.0%
Immortal decrefs57,134,4203.7%57,135,0843.7%0.0%
Frees214,503,740214,505,6400.0%
Immortal increfs216,702,00017.4%216,702,90419.9%0.0%
Allocations214,503,72079.1%214,503,96072.3%0.0%
Allocations to 512 bytes214,500,44079.1%214,500,50072.3%0.0%
Allocations over 4 kbytes00.0%00.0%
Inline values00
Materialize dict (on request)00
Materialize dict (new key)00
Materialize dict (too big)00
Materialize dict (str subclass)00
Method cache dunder hits00
Method cache dunder misses00
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-sqlglot-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-sqlglot-vs-base.md new file mode 100644 index 00000000..b66e746b --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-sqlglot-vs-base.md @@ -0,0 +1,3319 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD_NO_INTERRUPT7,019,9208,940-99.9%
JUMP_BACKWARD22,397,68067,700-99.7%
UNARY_NOT3,560,08011,420-99.7%
TO_BOOL4,155,98050,760-98.8%
BINARY_SUBSCR_TUPLE_INT124,2802,920-97.7%
COPY_FREE_VARS3,753,680104,500-97.2%
STORE_DEREF31,6801,620-94.9%
CALL_PY_GENERAL5,158,120307,840-94.0%
PUSH_NULL4,606,960334,960-92.7%
CONTAINS_OP615,08064,480-89.5%
CALL_BUILTIN_CLASS494,52053,140-89.3%
FOR_ITER_GEN4,588,960543,760-88.2%
CALL_METHOD_DESCRIPTOR_FAST4,747,620584,500-87.7%
BINARY_SUBSCR_LIST_INT302,72037,700-87.5%
CALL_BUILTIN_FAST1,147,960147,240-87.2%
LOAD_ATTR_NONDESCRIPTOR_NO_DICT595,88080,240-86.5%
CALL_BOUND_METHOD_EXACT_ARGS354,10052,760-85.1%
TO_BOOL_STR1,573,480314,720-80.0%
TO_BOOL_INT3,020660-78.1%
STORE_SUBSCR_DICT288,46064,180-77.8%
FOR_ITER_LIST9,074,5802,051,080-77.4%
FOR_ITER_TUPLE1,021,620256,660-74.9%
TO_BOOL_NONE2,756,700706,980-74.4%
BINARY_SUBSCR50,84013,760-72.9%
EXTENDED_ARG1,030,880291,860-71.7%
SEND_GEN10,085,1603,074,180-69.5%
CALL_METHOD_DESCRIPTOR_O677,480246,560-63.6%
FOR_ITER20,534,4807,507,140-63.4%
LOAD_FAST_LOAD_FAST16,943,4406,334,500-62.6%
LOAD_ATTR_MODULE4,118,8601,660,640-59.7%
TO_BOOL_ALWAYS_TRUE9,147,0003,786,720-58.6%
POP_JUMP_IF_NOT_NONE3,996,4001,671,500-58.2%
BUILD_LIST4,945,9202,109,860-57.3%
BINARY_SUBSCR_DICT12,5605,440-56.7%
BINARY_SUBSCR_STR_INT8,7403,860-55.8%
MAKE_CELL1,088,000490,020-55.0%
LOAD_ATTR_METHOD_WITH_VALUES8,165,3603,984,740-51.2%
BUILD_STRING980,800480,440-51.0%
POP_JUMP_IF_TRUE14,691,6807,310,660-50.2%
STORE_FAST_LOAD_FAST901,600450,960-50.0%
CALL_LEN113,04057,300-49.3%
STORE_FAST40,293,62020,643,840-48.8%
LOAD_DEREF8,640,5604,585,420-46.9%
COPY10,496,8005,726,060-45.4%
RESUME_CHECK57,782,14031,898,240-44.8%
LOAD_ATTR_SLOT20,846,64011,682,340-44.0%
POP_JUMP_IF_FALSE49,790,48027,981,600-43.8%
LOAD_FAST162,591,76092,447,740-43.1%
CALL_ISINSTANCE38,067,84021,684,600-43.0%
COMPARE_OP_INT81,68047,280-42.1%
STORE_FAST_STORE_FAST12,305,6807,193,640-41.5%
LOAD_GLOBAL_MODULE27,952,12016,638,080-40.5%
LOAD_ATTR_METHOD_NO_DICT19,668,74011,738,560-40.3%
DICT_MERGE30,80018,400-40.3%
UNPACK_SEQUENCE_TWO_TUPLE11,769,8407,058,500-40.0%
LOAD_GLOBAL_BUILTIN75,327,70045,799,640-39.2%
TO_BOOL_BOOL49,228,68030,060,580-38.9%
LOAD_CONST13,048,7208,072,920-38.1%
CALL_PY_EXACT_ARGS26,557,56016,764,200-36.9%
TO_BOOL_LIST8,5805,520-35.7%
SWAP10,682,4007,188,120-32.7%
FORMAT_SIMPLE1,721,4401,221,080-29.1%
CALL_LIST_APPEND354,760253,400-28.6%
GET_ITER13,564,1609,881,160-27.2%
POP_TOP29,607,20021,759,080-26.5%
CALL_KW_NON_PY19,20014,340-25.3%
BUILD_TUPLE15,379,28011,890,240-22.7%
MAP_ADD4,506,1603,557,940-21.0%
COMPARE_OP1,326,3001,058,220-20.2%
MAKE_FUNCTION3,221,6002,587,640-19.7%
CALL_TUPLE_12,426,6801,985,300-18.2%
RETURN_VALUE33,863,44028,039,200-17.2%
CALL_METHOD_DESCRIPTOR_NOARGS11,455,8809,861,440-13.9%
STORE_ATTR_SLOT731,020638,440-12.7%
BINARY_OP_ADD_INT139,840122,400-12.5%
RETURN_GENERATOR6,732,1605,908,860-12.2%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES4,321,1803,814,400-11.7%
CALL_BUILTIN_O4,321,1803,816,940-11.7%
UNPACK_SEQUENCE_TUPLE4,530,9004,069,520-10.2%
LIST_APPEND124,800112,320-10.0%
CONTAINS_OP_DICT17,36015,860-8.6%
JUMP_FORWARD2,444,7202,238,820-8.4%
BINARY_OP_SUBTRACT_INT30,70028,220-8.1%
LOAD_ATTR_PROPERTY2,983,2202,778,260-6.9%
SET_FUNCTION_ATTRIBUTE642,480613,880-4.5%
NOP16,08015,400-4.2%
POP_JUMP_IF_NONE2,4002,340-2.5%
CALL_BUILTIN_FAST_WITH_KEYWORDS26,82026,160-2.5%
RETURN_CONST7,597,2007,445,600-2.0%
LOAD_ATTR150,160148,660-1.0%
IS_OP1,686,7201,680,660-0.4%
BUILD_MAP3,522,3203,509,920-0.4%
COMPARE_OP_STR331,240330,800-0.1%
YIELD_VALUE16,324,24016,324,2400.0%
INTERPRETER_EXIT14,163,14014,163,1400.0%
LOAD_FAST_AND_CLEAR10,599,84010,599,8400.0%
CALL_TYPE_13,307,8003,307,8000.0%
END_SEND3,065,2803,065,2800.0%
GET_YIELD_FROM_ITER3,065,2803,065,2800.0%
CALL_KW_PY628,840628,8400.0%
END_FOR542,600542,6000.0%
UNPACK_SEQUENCE114,100114,1000.0%
CALL_NON_PY_GENERAL71,90071,9000.0%
CALL_FUNCTION_EX33,92033,9200.0%
BINARY_OP23,92023,9200.0%
CALL13,72013,7200.0%
LOAD_GLOBAL12,04012,0400.0%
LOAD_ATTR_INSTANCE_VALUE11,92011,9200.0%
BINARY_SLICE4,8804,8800.0%
CONTAINS_OP_SET4,4404,4400.0%
RESUME2,7402,7400.0%
STORE_ATTR1,7601,7600.0%
BINARY_OP_INPLACE_ADD_UNICODE1,1801,1800.0%
CALL_KW5605600.0%
CHECK_EXC_MATCH2402400.0%
POP_EXCEPT2402400.0%
PUSH_EXC_INFO2402400.0%
FOR_ITER_RANGE1401400.0%
CALL_INTRINSIC_180800.0%
DICT_UPDATE80800.0%
LIST_EXTEND80800.0%
SEND80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK60600.0%
STORE_SUBSCR40400.0%
ENTER_EXECUTOR19,368,900
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
171,78087.8%151,86086.4%-11.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
23,42012.0%23,42013.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success30060.0%30060.0%0.0%
Failure20040.0%20040.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
add other18090.0%18090.0%0.0%
add different types2010.0%2010.0%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4,880100.0%4,880100.0%0.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
448,06089.8%49,68078.0%-88.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
50,02010.0%13,06020.5%-73.9%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
2400.0%2400.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure56068.3%44062.9%-21.4%
Success26031.7%26037.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple slice18032.1%10022.7%-44.4%
out of range10017.9%6013.6%-40.0%
list slice28050.0%28063.6%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
550,9600.6%121,2400.2%-78.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
93,856,38099.4%58,772,42099.8%-37.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6,8600.0%6,8600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success17,500100.0%9,400100.0%-46.3%
Failure00.0%00.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
init not inline values2020 / 0 !!2020 / 0 !!0.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
28050.0%28050.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,322,52076.0%1,054,66073.4%-20.3%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
412,92023.7%378,08026.3%-8.4%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure3,50092.6%3,28092.1%-6.3%
Success2807.4%2807.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
string2005.7%1003.0%-50.0%
set2406.9%1604.9%-33.3%
baseobject1,20034.3%1,16035.4%-3.3%
different types1,36038.9%1,36041.5%0.0%
other42012.0%42012.8%0.0%
big int802.3%802.4%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
613,94096.4%63,56075.0%-89.6%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
18,4802.9%16,98020.0%-8.1%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
3,3200.5%3,3203.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure96080.0%74075.5%-22.9%
Success24020.0%24024.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple960100.0%740100.0%-22.9%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
14,685,30041.7%2,851,64027.5%-80.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
20,526,38058.3%7,502,54072.4%-63.4%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure7,72095.3%4,22091.7%-45.3%
Success3804.7%3808.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
enumerate3204.1%1603.8%-50.0%
dict items5,64073.1%2,86067.8%-49.3%
itertools5407.0%3207.6%-40.7%
other2403.1%1603.8%-33.3%
dict values7409.6%50011.8%-32.4%
dict keys1201.6%1002.4%-16.7%
ascii string1201.6%1202.8%0.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
385,0000.6%47,7000.1%-87.6%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
6,897,06011.3%3,017,7808.4%-56.2%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
53,814,80088.4%32,733,38091.2%-39.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
139,2200.2%137,7600.4%-1.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success137,26097.6%64,10095.1%-53.3%
Failure3,3202.4%3,2804.9%-1.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
mutable class2,80084.3%2,76084.1%-1.4%
method50015.1%50015.2%0.0%
class method obj200.6%200.6%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
103,275,580100.0%62,433,480100.0%-39.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6,0200.0%6,0200.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
4,2400.0%4,2400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success6,100100.0%6,100100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### SEND + +
+ specialization stats for SEND family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
10,085,160100.0%3,074,180100.0%-69.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.0%400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
300,28041.0%214,40033.5%-28.6%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
430,74058.8%424,04066.2%-1.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
8800.1%8800.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success8,860100.0%8,740100.0%-1.4%
Failure00.0%00.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
288,460100.0%64,18099.9%-77.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.0%200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4,151,0006.8%46,9000.1%-98.9%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
4,612,8407.6%1,314,5204.1%-71.5%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
52,117,04085.6%30,582,78095.7%-41.3%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,5801.7%4601.6%-70.9%
Success90,34098.3%28,12098.4%-68.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other1,06067.1%12026.1%-88.7%
sequence52032.9%34073.9%-34.6%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
16,300,74099.3%11,128,02099.0%-31.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
113,5000.7%113,5001.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success38063.3%38063.3%0.0%
Failure22036.7%22036.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other220100.0%220100.0%0.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
27,003,9402.6%9,014,1201.5%-66.6%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
12,499,4801.2%4,885,7400.8%-60.9%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
415,068,58040.7%238,297,44038.9%-42.6%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
566,259,70055.5%361,157,72058.9%-36.2%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
TO_BOOL4,151,00015.4%46,9000.5%-98.9%
CONTAINS_OP613,9402.3%63,5600.7%-89.6%
BINARY_SUBSCR50,0200.2%13,0600.1%-73.9%
FOR_ITER20,526,38076.1%7,502,54083.6%-63.4%
COMPARE_OP1,322,5204.9%1,054,66011.8%-20.3%
LOAD_ATTR139,2200.5%137,7601.5%-1.0%
UNPACK_SEQUENCE113,5000.4%113,5001.3%0.0%
BINARY_OP23,4200.1%23,4200.3%0.0%
CALL6,8600.0%6,8600.1%0.0%
LOAD_GLOBAL6,0200.0%6,0200.1%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
TO_BOOL_STR355,4402.8%36,1400.7%-89.8%
CALL_BOUND_METHOD_EXACT_ARGS230,7801.8%32,8600.7%-85.8%
TO_BOOL_ALWAYS_TRUE3,159,42025.3%808,84016.6%-74.4%
CALL_PY_EXACT_ARGS320,1802.6%88,3801.8%-72.4%
LOAD_ATTR_METHOD_WITH_VALUES2,417,84019.3%675,56013.8%-72.1%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES498,2604.0%160,9603.3%-67.7%
TO_BOOL_NONE1,096,0408.8%467,6009.6%-57.3%
LOAD_ATTR_SLOT3,952,84031.6%2,153,14044.1%-45.5%
STORE_ATTR_SLOT430,7403.4%424,0408.7%-1.6%
LOAD_ATTR_PROPERTY28,1200.2%28,1200.6%0.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault14,163,14022.0%14,163,14022.0%0.0%
Calls to Python functions inlined50,353,90078.0%50,353,90078.0%0.0%
Calls via PyEval_EvalFrame (total)14,163,14022.0%14,163,14022.0%0.0%
Calls via PyEval_EvalFrame (vector)5,780,9009.0%5,780,9009.0%0.0%
Calls via PyEval_EvalFrame (generator)8,382,24013.0%8,382,24013.0%0.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)5,780,9009.0%5,780,9009.0%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)1,984,0003.1%1,984,0003.1%0.0%
Calls via PyEval_EvalFrame (function ex)32,1600.0%32,1600.0%0.0%
Calls via PyEval_EvalFrame (api)3,774,0205.8%3,774,0205.8%0.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created2400.0%2400.0%0.0%
Frames pushed41,460,64064.3%41,460,64064.3%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache dunder misses4,1382,496-39.7%
Method cache hits7,166,1855,234,313-27.0%
Interpreter immortal decrefs94,617,72010.3%115,562,28011.6%22.1%
Interpreter mortal increfs398,734,62046.1%464,451,80051.0%16.5%
Allocations to 4 kbytes39,5200.0%45,8400.0%16.0%
Interpreter mortal decrefs457,438,40049.8%515,979,54051.7%12.8%
Interpreter immortal increfs126,261,62014.6%110,875,96012.2%-12.2%
Method cache collisions599,605583,499-2.7%
Method cache misses599,535584,667-2.5%
Mortal increfs194,105,20322.4%190,016,62120.9%-2.1%
Immortal decrefs134,559,55414.7%132,647,75413.3%-1.4%
Mortal decrefs231,364,73825.2%234,464,48223.5%1.3%
Immortal increfs146,579,84616.9%144,681,37015.9%-1.3%
Method cache dunder hits61,354,94260,740,464-1.0%
Frees65,462,70665,475,3080.0%
Allocations65,219,74062.4%65,229,64062.4%0.0%
Allocations to 512 bytes65,180,22062.4%65,183,32062.4%0.0%
Allocations from freelist39,223,78037.6%39,224,28037.6%0.0%
Frees to freelist39,339,16039,339,6600.0%
Allocations over 4 kbytes00.0%4800.0%480 / 0 !!
Inline values20,88020,8800.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
18018,5205,499,2608018,2805,510,020
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-sqlglot_optimize-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-sqlglot_optimize-vs-base.md new file mode 100644 index 00000000..639a90cb --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-sqlglot_optimize-vs-base.md @@ -0,0 +1,3484 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD22,657,920118,760-99.5%
JUMP_BACKWARD_NO_INTERRUPT3,781,60062,120-98.4%
BINARY_SUBSCR_TUPLE_INT92,1202,960-96.8%
TO_BOOL2,432,040103,560-95.7%
COPY_FREE_VARS2,325,360130,420-94.4%
UNARY_NOT962,40056,900-94.1%
BINARY_SUBSCR_LIST_INT1,315,78087,380-93.4%
FOR_ITER_GEN2,520,520287,120-88.6%
BINARY_SUBSCR_STR_INT452,10072,540-84.0%
BUILD_LIST6,904,4001,167,080-83.1%
STORE_SUBSCR_DICT1,558,820274,820-82.4%
FOR_ITER_LIST11,034,4801,981,680-82.0%
FOR_ITER19,176,3203,954,540-79.4%
POP_JUMP_IF_NOT_NONE4,222,400934,760-77.9%
TO_BOOL_INT180,58040,040-77.8%
PUSH_NULL3,995,760901,560-77.4%
SEND_GEN4,811,5401,092,060-77.3%
CALL_PY_GENERAL2,718,160639,960-76.5%
FOR_ITER_TUPLE595,520155,040-74.0%
COMPARE_OP_INT636,980178,460-72.0%
CALL_BUILTIN_FAST1,215,920341,560-71.9%
BINARY_OP_ADD_INT551,920163,080-70.5%
STORE_FAST_STORE_FAST14,008,3204,167,220-70.3%
UNPACK_SEQUENCE_TWO_TUPLE12,736,1003,813,640-70.1%
CALL_METHOD_DESCRIPTOR_FAST5,201,6801,561,720-70.0%
TO_BOOL_NONE3,137,2001,052,580-66.4%
BINARY_OP_SUBTRACT_INT290,400100,060-65.5%
TO_BOOL_STR1,480,980512,880-65.4%
BUILD_SET56,48020,220-64.2%
LOAD_ATTR_NONDESCRIPTOR_NO_DICT1,009,440361,640-64.2%
STORE_DEREF31,84011,860-62.8%
EXTENDED_ARG3,342,7201,248,100-62.7%
BINARY_SUBSCR73,04028,900-60.4%
CALL_BUILTIN_CLASS179,26077,780-56.6%
STORE_FAST36,286,20016,392,080-54.8%
POP_JUMP_IF_FALSE45,553,44020,760,080-54.4%
LOAD_GLOBAL_BUILTIN71,821,58033,081,100-53.9%
LOAD_ATTR_SLOT20,081,5609,301,620-53.7%
CALL_ISINSTANCE37,015,64017,168,020-53.6%
TO_BOOL_ALWAYS_TRUE3,996,0201,856,120-53.6%
STORE_ATTR_SLOT4,194,5801,955,720-53.4%
LOAD_FAST160,095,20075,154,420-53.1%
TO_BOOL_BOOL44,745,96021,338,320-52.3%
CONTAINS_OP265,940129,180-51.4%
MAP_ADD4,025,7601,964,600-51.2%
POP_JUMP_IF_TRUE12,022,4005,883,300-51.1%
CALL_BOUND_METHOD_EXACT_ARGS391,640192,840-50.8%
STORE_FAST_LOAD_FAST317,920156,840-50.7%
CALL_LIST_APPEND1,611,780796,060-50.6%
LOAD_FAST_LOAD_FAST13,147,5606,689,400-49.1%
GET_ITER12,174,6406,225,800-48.9%
LOAD_GLOBAL_MODULE34,781,94018,126,820-47.9%
LOAD_ATTR_METHOD_NO_DICT19,722,16010,371,220-47.4%
CALL_LEN171,94091,200-47.0%
CALL_METHOD_DESCRIPTOR_O1,106,100593,120-46.4%
LIST_APPEND234,560127,280-45.7%
BUILD_TUPLE15,009,6008,147,160-45.7%
RESUME_CHECK44,933,40025,261,580-43.8%
COPY5,082,0802,919,040-42.6%
BUILD_STRING1,029,280592,340-42.5%
LOAD_CONST13,289,0407,665,080-42.3%
MAKE_CELL1,622,560948,080-41.6%
CALL_PY_EXACT_ARGS23,371,00013,713,820-41.3%
LOAD_ATTR_METHOD_WITH_VALUES3,320,4001,955,500-41.1%
LOAD_DEREF4,611,1202,752,000-40.3%
SET_ADD17,92011,000-38.6%
LOAD_ATTR_MODULE9,715,3806,090,820-37.3%
SWAP6,806,8804,297,360-36.9%
CALL_METHOD_DESCRIPTOR_NOARGS9,243,3605,845,880-36.8%
UNPACK_SEQUENCE_TUPLE2,909,8401,938,620-33.4%
SET_FUNCTION_ATTRIBUTE872,000581,100-33.4%
CONTAINS_OP_DICT314,660220,920-29.8%
NOP317,520229,320-27.8%
FORMAT_SIMPLE1,910,2401,473,300-22.9%
CONTAINS_OP_SET246,620192,180-22.1%
RETURN_VALUE29,524,50023,064,160-21.9%
POP_TOP17,008,28013,360,580-21.4%
COMPARE_OP1,013,220798,520-21.2%
LOAD_ATTR675,280544,840-19.3%
MAKE_FUNCTION2,530,5602,064,480-18.4%
BINARY_SLICE60,64049,740-18.0%
JUMP_FORWARD1,277,9201,055,940-17.4%
CALL_INTRINSIC_199,92084,860-15.1%
LIST_EXTEND99,92084,860-15.1%
DICT_MERGE184,640161,540-12.5%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES3,657,5403,211,680-12.2%
CALL_BUILTIN_O3,932,3603,481,620-11.5%
CALL_TUPLE_11,678,7201,534,020-8.6%
COMPARE_OP_STR437,740410,260-6.3%
TO_BOOL_LIST37,88035,840-5.4%
BINARY_OP20,74019,640-5.3%
BINARY_OP_INPLACE_ADD_UNICODE25,40024,060-5.3%
RETURN_GENERATOR3,215,5203,049,380-5.2%
RETURN_CONST5,387,0405,114,440-5.1%
BINARY_SUBSCR_DICT597,700571,180-4.4%
LOAD_ATTR_PROPERTY3,447,7003,329,680-3.4%
CALL_KW_PY431,400417,800-3.2%
CALL_TYPE_11,734,9601,682,320-3.0%
CALL_KW_NON_PY93,98091,820-2.3%
IS_OP1,234,2401,207,960-2.1%
LOAD_ATTR_INSTANCE_VALUE812,000800,600-1.4%
BUILD_MAP2,331,0402,299,900-1.3%
POP_JUMP_IF_NONE132,640131,260-1.0%
LOAD_FAST_AND_CLEAR6,013,9205,980,000-0.6%
CALL_NON_PY_GENERAL196,800196,260-0.3%
CALL_BUILTIN_FAST_WITH_KEYWORDS31,14031,100-0.1%
INTERPRETER_EXIT10,428,58010,427,540-0.0%
YIELD_VALUE10,029,28010,029,2800.0%
END_SEND1,030,0801,030,0800.0%
GET_YIELD_FROM_ITER1,030,0801,030,0800.0%
UNPACK_EX291,360291,3600.0%
END_FOR279,980279,9800.0%
CALL_FUNCTION_EX193,760193,7600.0%
STORE_ATTR_INSTANCE_VALUE166,000166,0000.0%
CHECK_EXC_MATCH76,48076,4800.0%
POP_EXCEPT76,48076,4800.0%
PUSH_EXC_INFO76,48076,4800.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK75,26075,2600.0%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS73,58073,5800.0%
CALL34,32034,3200.0%
LOAD_GLOBAL29,36029,3600.0%
UNPACK_SEQUENCE16,60016,6000.0%
RESUME6,3206,3200.0%
STORE_ATTR3,1203,1200.0%
CALL_KW3,0003,0000.0%
CALL_STR_12,9802,9800.0%
DICT_UPDATE2,0802,0800.0%
IMPORT_NAME1,9201,9200.0%
EXIT_INIT_CHECK1,1001,1000.0%
CALL_ALLOC_AND_ENTER_INIT1,1001,1000.0%
LOAD_FAST_CHECK9609600.0%
STORE_SUBSCR7607600.0%
BINARY_SUBSCR_GETITEM3003000.0%
SEND2802800.0%
FOR_ITER_RANGE2202200.0%
SET_UPDATE1601600.0%
BINARY_OP_ADD_FLOAT1401400.0%
BINARY_OP_SUBTRACT_FLOAT1401400.0%
ENTER_EXECUTOR15,048,460
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
867,94097.7%287,42093.6%-66.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
19,5202.2%18,4606.0%-5.4%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
600.0%600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure74060.7%70059.3%-5.4%
Success48039.3%48040.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
add other70094.6%66094.3%-5.7%
subtract other405.4%405.7%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
60,640100.0%49,740100.0%-18.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,451,66096.9%728,02095.4%-70.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
71,3802.8%27,4203.6%-61.6%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
6,3400.3%6,3400.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,00056.8%82051.9%-18.0%
Success76043.2%76048.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
out of range18018.0%10012.2%-44.4%
tuple slice18018.0%10012.2%-44.4%
list slice40040.0%38046.3%-5.0%
other24024.0%24029.3%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
86,713,52099.2%46,898,74099.0%-45.9%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
678,6400.8%441,9000.9%-34.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
17,1600.0%17,1600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success31,340100.0%26,880100.0%-14.2%
Failure00.0%00.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
init not inline values2020 / 0 !!2020 / 0 !!0.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,50050.0%1,50050.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,074,72051.5%588,72042.4%-45.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,007,84048.3%793,40057.2%-21.3%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure4,58085.1%4,32084.4%-5.7%
Success80014.9%80015.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
string2004.4%1002.3%-50.0%
set2204.8%1804.2%-18.2%
baseobject2,04044.5%1,92044.4%-5.9%
different types1,50032.8%1,50034.7%0.0%
other4209.2%4209.7%0.0%
big int1202.6%1202.8%0.0%
bool801.7%801.9%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
263,98031.9%127,28023.5%-51.8%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
527,56063.8%379,38070.0%-28.1%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
33,7204.1%33,7206.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,34051.9%1,28050.8%-4.5%
Success1,24048.1%1,24049.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
list40029.9%38029.7%-5.0%
tuple94070.1%90070.3%-4.3%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
14,150,74042.5%2,424,06038.0%-82.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
19,164,70057.5%3,947,48061.9%-79.4%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure9,96085.7%5,40076.5%-45.8%
Success1,66014.3%1,66023.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
dict items6,36063.9%2,70050.0%-57.5%
enumerate5405.4%3205.9%-40.7%
reversed list2002.0%1202.2%-40.0%
itertools5205.2%3406.3%-34.6%
other2602.6%2003.7%-23.1%
set4604.6%3606.7%-21.7%
dict keys5405.4%4408.1%-18.5%
dict values8808.8%74013.7%-15.9%
ascii string2002.0%1803.3%-10.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
439,8200.7%103,1000.3%-76.6%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
10,180,98016.3%4,738,36013.1%-53.5%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
51,660,46082.6%30,759,66085.3%-40.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
641,9801.0%511,7001.4%-20.3%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success212,68094.7%110,02090.4%-48.3%
Failure11,8005.3%11,6409.6%-1.4%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
method1,90016.1%1,86016.0%-2.1%
mutable class9,54080.8%9,42080.9%-1.3%
class method obj2201.9%2201.9%0.0%
builtin class method1401.2%1401.2%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
106,599,280100.0%51,203,68099.9%-52.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
14,6800.0%14,6800.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
4,2400.0%4,2400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success14,760100.0%14,760100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### SEND + +
+ specialization stats for SEND family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
4,811,540100.0%1,092,060100.0%-77.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1400.0%1400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success140100.0%140100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,412,22055.3%985,32046.4%-59.2%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1,948,36044.6%1,136,40053.5%-41.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,5600.0%1,5600.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success38,260100.0%22,940100.0%-40.0%
Failure00.0%00.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,558,820100.0%274,82099.7%-82.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3800.0%3800.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success380100.0%380100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,422,1004.5%94,1600.4%-96.1%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
3,210,6805.9%1,356,4805.6%-57.8%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
48,622,62089.6%22,593,46093.9%-53.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success67,94097.0%33,00095.5%-51.4%
Failure2,0803.0%1,5404.5%-26.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple1205.8%24015.6%100.0%
other66031.7%30019.5%-54.5%
sequence68032.7%38024.7%-44.1%
dict54026.0%54035.1%0.0%
set803.8%805.2%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
15,645,94099.9%5,752,26099.7%-63.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
15,6600.1%15,6600.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success78083.0%78083.0%0.0%
Failure16017.0%16017.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other160100.0%160100.0%0.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
23,804,6602.6%5,716,3601.2%-76.0%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
16,063,1401.8%7,717,9601.6%-52.0%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
386,786,96042.2%191,308,48040.5%-50.5%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
489,280,36053.4%268,020,46056.7%-45.2%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
TO_BOOL2,422,10010.2%94,1601.7%-96.1%
FOR_ITER19,164,70080.9%3,947,48070.2%-79.4%
BINARY_SUBSCR71,3800.3%27,4200.5%-61.6%
CONTAINS_OP263,9801.1%127,2802.3%-51.8%
COMPARE_OP1,007,8404.3%793,40014.1%-21.3%
LOAD_ATTR641,9802.7%511,7009.1%-20.3%
BINARY_SLICE60,6400.3%49,7400.9%-18.0%
BINARY_OP19,5200.1%18,4600.3%-5.4%
CALL17,1600.1%17,1600.3%0.0%
UNPACK_SEQUENCE15,6600.1%15,6600.3%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
TO_BOOL_STR301,7801.9%62,4400.8%-79.3%
LOAD_ATTR_SLOT7,359,54045.8%2,876,60037.3%-60.9%
TO_BOOL_ALWAYS_TRUE2,250,70014.0%970,28012.6%-56.9%
CALL_BOUND_METHOD_EXACT_ARGS264,8801.6%123,1001.6%-53.5%
TO_BOOL_NONE641,6804.0%307,2404.0%-52.1%
LOAD_ATTR_METHOD_WITH_VALUES1,234,1807.7%612,3407.9%-50.4%
STORE_ATTR_SLOT1,948,36012.1%1,136,40014.7%-41.7%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES1,521,3609.5%1,184,58015.3%-22.1%
CALL_PY_EXACT_ARGS367,3802.3%305,2604.0%-16.9%
LOAD_ATTR_PROPERTY49,3600.3%48,3000.6%-2.1%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls via PyEval_EvalFrame (api)3,204,2206.7%3,203,1806.7%-0.0%
Calls via PyEval_EvalFrame (vector)4,515,9809.4%4,514,9409.4%-0.0%
Calls via PyEval_EvalFrame (function vectorcall)4,515,9809.4%4,514,9409.4%-0.0%
Calls to PyEval_EvalDefault10,428,58021.7%10,427,54021.7%-0.0%
Calls via PyEval_EvalFrame (total)10,428,58021.7%10,427,54021.7%-0.0%
Calls to Python functions inlined37,726,66078.3%37,727,70078.3%0.0%
Calls via PyEval_EvalFrame (generator)5,912,60012.3%5,912,60012.3%0.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)1,068,5002.2%1,068,5002.2%0.0%
Calls via PyEval_EvalFrame (function ex)84,0000.2%84,0000.2%0.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created76,4800.2%76,4800.2%0.0%
Frames pushed34,911,54072.5%34,911,54072.5%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Allocations over 4 kbytes1600.0%8400.0%425.0%
Method cache dunder misses57,28122,883-60.1%
Allocations to 4 kbytes75,3600.1%93,2800.1%23.8%
Interpreter immortal decrefs85,226,7809.6%102,180,88010.6%19.9%
Interpreter immortal increfs116,576,88013.9%93,841,44010.8%-19.5%
Interpreter mortal increfs364,075,82043.4%425,845,40048.9%17.0%
Interpreter mortal decrefs422,199,50047.5%476,544,58049.5%12.9%
Method cache hits12,542,08510,939,957-12.8%
Method cache collisions716,790642,009-10.4%
Method cache misses665,655625,483-6.0%
Mortal increfs202,727,20824.2%198,957,00622.8%-1.9%
Mortal decrefs231,468,62926.0%235,151,14324.4%1.6%
Immortal decrefs150,231,65116.9%147,917,40915.4%-1.5%
Immortal increfs154,693,20818.5%152,398,28617.5%-1.5%
Method cache dunder hits63,342,27962,807,717-0.8%
Frees61,578,86261,606,5030.0%
Allocations60,520,98063.2%60,547,10063.2%0.0%
Allocations to 512 bytes60,445,46063.1%60,452,98063.1%0.0%
Allocations from freelist35,223,92036.8%35,225,72036.8%0.0%
Frees to freelist35,374,34035,376,1400.0%
Inline values151,840151,8400.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1260184,4007,458,980260185,3607,454,220
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-sqlglot_parse-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-sqlglot_parse-vs-base.md new file mode 100644 index 00000000..26df685a --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-sqlglot_parse-vs-base.md @@ -0,0 +1,3035 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
TO_BOOL_INT8,949,74011,420-99.9%
BINARY_SLICE3,573,76010,280-99.7%
JUMP_BACKWARD25,333,760163,800-99.4%
BINARY_SUBSCR1,403,98011,260-99.2%
COMPARE_OP_STR3,163,98027,880-99.1%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES2,995,02080,000-97.3%
EXTENDED_ARG20,510,720588,640-97.1%
FOR_ITER_RANGE10,300360-96.5%
BINARY_SUBSCR_STR_INT28,293,0601,211,700-95.7%
CALL_METHOD_DESCRIPTOR_FAST17,346,3601,142,000-93.4%
SWAP30,433,2802,045,760-93.3%
CONTAINS_OP93,1007,280-92.2%
POP_JUMP_IF_NONE1,300,480155,280-88.1%
COPY32,051,2004,513,340-85.9%
TO_BOOL_STR19,057,8202,936,760-84.6%
BINARY_OP_ADD_INT32,675,6805,079,280-84.5%
FOR_ITER_LIST368,56058,460-84.1%
COMPARE_OP_INT34,027,2405,413,660-84.1%
BUILD_LIST1,382,480228,600-83.5%
STORE_ATTR_SLOT97,633,22016,855,180-82.7%
BINARY_OP_SUBTRACT_INT17,571,7003,967,060-77.4%
CALL_PY_GENERAL18,718,2204,670,120-75.1%
FOR_ITER16,081,8604,014,480-75.0%
LOAD_ATTR_SLOT287,371,46075,522,320-73.7%
BUILD_TUPLE2,662,400699,780-73.7%
LOAD_ATTR_PROPERTY3,737,5001,030,440-72.4%
LOAD_FAST552,458,560181,786,100-67.1%
UNPACK_SEQUENCE_TWO_TUPLE9,512,8803,323,220-65.1%
STORE_FAST_STORE_FAST9,512,9603,323,300-65.1%
LOAD_ATTR_NONDESCRIPTOR_NO_DICT25,353,5009,022,640-64.4%
TO_BOOL_BOOL27,676,60010,326,340-62.7%
CONTAINS_OP_DICT16,163,4206,063,060-62.5%
POP_TOP24,207,5209,806,820-59.5%
NOP11,427,9204,994,680-56.3%
POP_JUMP_IF_FALSE117,790,72051,910,140-55.9%
POP_JUMP_IF_TRUE49,766,40022,419,280-55.0%
LOAD_CONST46,919,76023,017,760-50.9%
LOAD_ATTR_METHOD_NO_DICT79,242,50038,968,720-50.8%
CALL_LIST_APPEND2,979,7601,528,540-48.7%
CALL_METHOD_DESCRIPTOR_NOARGS7,393,0803,912,100-47.1%
COMPARE_OP23,427,22012,893,100-45.0%
CALL_ISINSTANCE6,635,3203,673,620-44.6%
STORE_FAST53,934,20030,526,620-43.4%
BINARY_SUBSCR_DICT1,925,0001,187,780-38.3%
LOAD_ATTR26,319,12016,841,360-36.0%
POP_JUMP_IF_NOT_NONE1,597,4401,045,840-34.5%
GET_ITER6,185,0404,064,300-34.3%
LOAD_GLOBAL_MODULE38,346,22025,711,320-32.9%
RETURN_CONST43,028,48029,131,320-32.3%
LOAD_FAST_LOAD_FAST34,560,00023,545,300-31.9%
TO_BOOL_ALWAYS_TRUE25,505,74017,696,300-30.6%
BINARY_OP_INPLACE_ADD_UNICODE1,576,9201,110,020-29.6%
RESUME_CHECK77,351,08054,991,420-28.9%
JUMP_FORWARD3,389,4402,480,900-26.8%
LOAD_GLOBAL_BUILTIN19,844,64015,654,520-21.1%
TO_BOOL_NONE21,500,36017,511,200-18.6%
TO_BOOL_LIST60,88051,420-15.5%
CALL_PY_EXACT_ARGS41,464,04036,725,780-11.4%
CALL_NON_PY_GENERAL1,443,8201,365,220-5.4%
RETURN_VALUE34,324,64032,604,200-5.0%
CONTAINS_OP_SET2,821,2402,685,640-4.8%
CALL_LEN1,576,7801,501,340-4.8%
BINARY_SUBSCR_LIST_INT4,332,0204,165,080-3.9%
DICT_MERGE1,013,760995,220-1.8%
BUILD_MAP1,054,7201,036,180-1.8%
PUSH_NULL4,034,8003,986,680-1.2%
CALL_BOUND_METHOD_EXACT_ARGS1,343,4201,333,560-0.7%
LOAD_ATTR_MODULE2,129,3002,119,440-0.5%
INTERPRETER_EXIT11,120,76011,120,7600.0%
LOAD_ATTR_INSTANCE_VALUE6,922,2606,922,2600.0%
CALL_BUILTIN_O6,860,8006,860,8000.0%
LOAD_DEREF4,935,9204,935,9200.0%
LOAD_ATTR_METHOD_WITH_VALUES1,715,1801,715,1800.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS1,413,1001,413,1000.0%
CALL_TYPE_11,208,2801,208,2800.0%
CALL_FUNCTION_EX1,013,9201,013,9200.0%
CALL_KW_PY962,180962,1800.0%
MAKE_CELL839,680839,6800.0%
CALL_KW_NON_PY645,000645,0000.0%
IS_OP604,160604,1600.0%
STORE_DEREF174,080174,0800.0%
COPY_FREE_VARS82,00082,0000.0%
CALL_STR_171,64071,6400.0%
UNARY_NOT61,44061,4400.0%
LOAD_FAST_CHECK61,44061,4400.0%
CALL_BUILTIN_CLASS61,44061,4400.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK51,12051,1200.0%
CALL_BUILTIN_FAST40,94040,9400.0%
CHECK_EXC_MATCH30,72030,7200.0%
POP_EXCEPT30,72030,7200.0%
PUSH_EXC_INFO30,72030,7200.0%
MAKE_FUNCTION20,48020,4800.0%
SET_FUNCTION_ATTRIBUTE20,48020,4800.0%
BINARY_SUBSCR_GETITEM20,46020,4600.0%
CALL_BOUND_METHOD_GENERAL18,20018,2000.0%
TO_BOOL16,64016,6400.0%
CALL10,92010,9200.0%
DICT_UPDATE10,24010,2400.0%
BINARY_OP_ADD_FLOAT10,22010,2200.0%
BINARY_OP_SUBTRACT_FLOAT10,22010,2200.0%
STORE_SUBSCR_DICT10,22010,2200.0%
LOAD_GLOBAL6,6006,6000.0%
RESUME2,0402,0400.0%
STORE_ATTR1,7201,7200.0%
CALL_KW1,0001,0000.0%
BINARY_OP7607600.0%
UNPACK_SEQUENCE1601600.0%
CALL_INTRINSIC_180800.0%
LIST_EXTEND80800.0%
STORE_SUBSCR40400.0%
ENTER_EXECUTOR7,808,760
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
51,844,680100.0%10,176,740100.0%-80.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3800.0%3800.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
600.0%600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success380100.0%380100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3,573,760100.0%10,280100.0%-99.7%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,403,1603.9%10,8200.2%-99.2%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
34,539,24096.0%6,553,72099.4%-81.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
31,3000.1%31,3000.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure54038.6%16015.7%-70.4%
Success86061.4%86084.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
out of range540100.0%160100.0%-70.4%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
87,782,00097.8%58,850,32096.8%-33.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5,4600.0%5,4600.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1,937,3802.2%1,937,3803.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success42,460100.0%42,460100.0%0.0%
Failure00.0%00.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
init not inline values2020 / 0 !!2020 / 0 !!0.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
50050.0%50050.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
37,191,22061.4%5,441,54029.7%-85.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
23,419,34038.6%12,887,92070.3%-45.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure7,42094.2%4,72091.1%-36.4%
Success4605.8%4608.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
different types4606.2%1603.4%-65.2%
baseobject6,94093.5%4,56096.6%-34.3%
list200.3%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
92,4400.5%6,7600.1%-92.7%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
17,356,76091.0%7,120,82081.3%-59.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1,627,9008.5%1,627,88018.6%-0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure3801.2%2400.8%-36.8%
Success30,98098.8%30,98099.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple16042.1%10041.7%-37.5%
list22057.9%14058.3%-36.4%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
378,8602.3%58,8201.4%-84.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
16,076,90097.7%4,012,54098.5%-75.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure4,86098.0%1,84094.8%-62.1%
Success1002.0%1005.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
enumerate54011.1%1608.7%-70.4%
dict items2,34048.1%72039.1%-69.2%
dict keys90018.5%42022.8%-53.3%
ascii string1,08022.2%54029.3%-50.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
403,096,36092.5%133,214,58087.5%-67.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
6,421,4801.5%2,217,5401.5%-65.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
26,284,6406.0%16,809,62011.0%-36.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success129,92083.5%50,62068.8%-61.0%
Failure25,68016.5%22,94031.2%-10.7%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
class method obj5202.0%4201.8%-19.2%
mutable class21,90085.3%19,36084.4%-11.6%
method3,26012.7%3,16013.8%-3.1%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
58,186,620100.0%41,361,600100.0%-28.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3,3000.0%3,3000.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
4,2400.0%4,2400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success3,380100.0%3,380100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
90,805,64093.0%12,684,86075.3%-86.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
6,827,5807.0%4,170,32024.7%-38.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
8600.0%8600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success129,660100.0%79,540100.0%-38.7%
Failure00.0%00.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.2%200.2%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
10,22099.6%10,22099.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
74,180,98094.0%29,042,82092.5%-60.8%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
4,680,8405.9%2,325,8807.4%-50.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
13,3600.0%13,3600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success91,14099.8%46,72099.7%-48.7%
Failure1600.2%1600.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other160100.0%160100.0%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
9,512,880100.0%3,323,220100.0%-65.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
800.0%800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success80100.0%80100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
986,588,10044.7%386,340,74043.2%-60.8%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
1,127,919,64051.1%461,917,56051.6%-59.0%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
70,936,8803.2%33,815,6003.8%-52.3%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
21,531,5401.0%12,315,4401.4%-42.8%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
BINARY_SLICE3,573,7605.0%10,2800.0%-99.7%
BINARY_SUBSCR1,403,1602.0%10,8200.0%-99.2%
CONTAINS_OP92,4400.1%6,7600.0%-92.7%
FOR_ITER16,076,90022.7%4,012,54011.9%-75.0%
COMPARE_OP23,419,34033.0%12,887,92038.2%-45.0%
LOAD_ATTR26,284,64037.1%16,809,62049.8%-36.0%
TO_BOOL13,3600.0%13,3600.0%0.0%
CALL5,4600.0%5,4600.0%0.0%
LOAD_GLOBAL3,3000.0%3,3000.0%0.0%
STORE_ATTR8600.0%8600.0%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
LOAD_ATTR_SLOT2,622,52012.2%828,5006.7%-68.4%
TO_BOOL_ALWAYS_TRUE1,616,4207.5%531,5604.3%-67.1%
TO_BOOL_NONE2,310,22010.7%1,133,0609.2%-51.0%
STORE_ATTR_SLOT6,827,58031.7%4,170,32033.9%-38.9%
CONTAINS_OP_DICT813,8203.8%813,8006.6%-0.0%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES2,440,86011.3%
LOAD_ATTR_METHOD_WITH_VALUES1,357,3406.3%1,357,34011.0%0.0%
CALL_PY_EXACT_ARGS976,5804.5%976,5807.9%0.0%
CALL_BOUND_METHOD_EXACT_ARGS945,9604.4%945,9607.7%0.0%
CONTAINS_OP_SET814,0803.8%814,0806.6%0.0%
TO_BOOL_BOOL658,0805.3%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault11,120,76014.4%11,120,76014.4%0.0%
Calls to Python functions inlined66,232,36085.6%66,232,36085.6%0.0%
Calls via PyEval_EvalFrame (total)11,120,76014.4%11,120,76014.4%0.0%
Calls via PyEval_EvalFrame (vector)11,120,76014.4%11,120,76014.4%0.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)11,120,76014.4%11,120,76014.4%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)1,126,4201.5%1,126,4201.5%0.0%
Calls via PyEval_EvalFrame (function ex)1600.0%1600.0%0.0%
Calls via PyEval_EvalFrame (api)6,860,9008.9%6,860,9008.9%0.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created30,7200.0%30,7200.0%0.0%
Frames pushed77,353,120100.0%77,353,120100.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache misses410,474522,25027.2%
Method cache dunder misses134,771106,049-21.3%
Method cache collisions543,623626,52215.2%
Interpreter immortal increfs318,973,42018.6%280,030,22016.2%-12.2%
Interpreter mortal increfs1,049,236,74061.2%1,104,955,44064.0%5.3%
Interpreter mortal decrefs1,141,576,58064.0%1,196,652,00064.9%4.8%
Interpreter immortal decrefs374,883,52021.0%385,839,64020.9%2.9%
Method cache hits63,470,20661,740,390-2.7%
Immortal decrefs149,543,9898.4%146,204,6127.9%-2.2%
Mortal increfs136,524,2288.0%134,005,6867.8%-1.8%
Mortal decrefs116,686,1916.5%114,814,1326.2%-1.6%
Immortal increfs210,132,50712.3%206,828,18512.0%-1.6%
Method cache dunder hits20,109,80920,138,5310.1%
Frees59,906,41759,910,3890.0%
Allocations60,700,12076.1%60,702,84076.1%0.0%
Allocations to 512 bytes60,700,12076.1%60,701,72076.1%0.0%
Allocations from freelist19,021,90023.9%19,021,76023.9%-0.0%
Frees to freelist19,020,38019,020,280-0.0%
Allocations to 4 kbytes00.0%1,0600.0%1,060 / 0 !!
Allocations over 4 kbytes00.0%600.0%60 / 0 !!
Inline values1,617,9201,617,9200.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
11,5202,129,40030,979,0001,5202,129,52030,985,860
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-sqlglot_transpile-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-sqlglot_transpile-vs-base.md new file mode 100644 index 00000000..19fda462 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-sqlglot_transpile-vs-base.md @@ -0,0 +1,3302 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
TO_BOOL_INT8,949,74011,420-99.9%
BINARY_SLICE3,573,76010,220-99.7%
JUMP_BACKWARD28,272,640172,280-99.4%
BINARY_SUBSCR1,414,54021,820-98.5%
COMPARE_OP_STR3,235,62090,820-97.2%
EXTENDED_ARG20,520,960593,660-97.1%
FOR_ITER_RANGE10,300360-96.5%
JUMP_BACKWARD_NO_INTERRUPT71,6802,760-96.1%
BINARY_SUBSCR_STR_INT28,293,0601,211,780-95.7%
SWAP30,638,0802,241,980-92.7%
CONTAINS_OP93,1407,300-92.2%
STORE_FAST_LOAD_FAST348,16031,300-91.0%
CALL_METHOD_DESCRIPTOR_FAST22,998,5003,309,680-85.6%
COPY32,348,1604,791,440-85.2%
POP_JUMP_IF_NONE1,556,480241,320-84.5%
BINARY_OP_ADD_INT32,675,6805,079,360-84.5%
FOR_ITER_GEN204,74032,160-84.3%
SEND_GEN81,90012,980-84.2%
COMPARE_OP_INT34,027,2405,413,760-84.1%
TO_BOOL_STR23,285,2203,954,000-83.0%
STORE_ATTR_SLOT98,214,72017,290,840-82.4%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES6,162,3201,266,000-79.5%
FOR_ITER_TUPLE1,853,380401,100-78.4%
BINARY_OP_SUBTRACT_INT17,571,7003,967,100-77.4%
FOR_ITER_LIST1,351,380310,560-77.0%
CALL_PY_GENERAL21,902,7205,259,100-76.0%
FOR_ITER16,974,3804,128,980-75.7%
TO_BOOL193,54050,420-73.9%
BUILD_LIST1,925,200515,740-73.2%
LOAD_ATTR_SLOT295,003,76079,500,960-73.1%
LOAD_FAST608,788,800206,866,340-66.0%
UNPACK_SEQUENCE_TWO_TUPLE10,086,2603,430,380-66.0%
STORE_FAST_STORE_FAST10,301,4403,522,940-65.8%
BUILD_TUPLE3,676,1601,261,340-65.7%
LOAD_ATTR_NONDESCRIPTOR_NO_DICT25,353,5009,022,620-64.4%
CALL_BUILTIN_FAST3,205,0001,167,180-63.6%
CONTAINS_OP_DICT16,163,4206,063,120-62.5%
TO_BOOL_BOOL40,250,72015,334,240-61.9%
CALL_ISINSTANCE13,843,9805,338,700-61.4%
LOAD_ATTR_PROPERTY4,597,4601,867,600-59.4%
POP_JUMP_IF_TRUE59,525,12025,163,800-57.7%
POP_JUMP_IF_FALSE134,082,56057,382,020-57.2%
POP_TOP26,306,76011,656,420-55.7%
NOP11,581,5205,148,320-55.5%
LOAD_ATTR_METHOD_NO_DICT86,133,38041,922,380-51.3%
CALL_METHOD_DESCRIPTOR_NOARGS7,833,3204,030,600-48.5%
CALL_LIST_APPEND3,061,6401,610,420-47.4%
LOAD_GLOBAL_BUILTIN37,917,56020,274,680-46.5%
LOAD_CONST55,777,36030,580,480-45.2%
POP_JUMP_IF_NOT_NONE2,048,0001,124,420-45.1%
COMPARE_OP23,437,70012,903,580-44.9%
STORE_FAST63,570,04035,831,780-43.6%
UNPACK_SEQUENCE_TUPLE286,660164,040-42.8%
BUILD_STRING2,344,9601,371,800-41.5%
TO_BOOL_ALWAYS_TRUE29,273,40018,007,560-38.5%
LOAD_ATTR26,451,50016,959,840-35.9%
LOAD_GLOBAL_MODULE42,114,00027,152,180-35.5%
LOAD_FAST_LOAD_FAST39,680,00025,927,740-34.7%
BINARY_SUBSCR_DICT2,150,2401,413,020-34.3%
GET_ITER7,362,6404,855,840-34.0%
RESUME_CHECK88,992,48061,439,600-31.0%
RETURN_CONST44,933,12031,035,980-30.9%
BINARY_OP_INPLACE_ADD_UNICODE1,576,9201,110,020-29.6%
FORMAT_SIMPLE3,471,3602,489,520-28.3%
LOAD_ATTR_METHOD_WITH_VALUES8,288,3805,960,920-28.1%
TO_BOOL_NONE26,076,44018,856,880-27.7%
CALL_BOUND_METHOD_EXACT_ARGS2,301,8801,670,620-27.4%
LOAD_ATTR_MODULE3,777,7802,750,760-27.2%
JUMP_FORWARD3,819,5202,846,740-25.5%
PUSH_NULL6,174,9604,783,980-22.5%
CALL_METHOD_DESCRIPTOR_O593,780486,600-18.1%
CALL_TYPE_11,587,1401,325,200-16.5%
STORE_SUBSCR_DICT460,680401,060-12.9%
CALL_BUILTIN_O8,898,4207,754,180-12.9%
CONTAINS_OP_SET3,200,1002,802,540-12.4%
BUILD_MAP1,372,1601,205,040-12.2%
TO_BOOL_LIST123,280109,860-10.9%
CALL_PY_EXACT_ARGS46,611,14042,115,420-9.6%
IS_OP839,680782,220-6.8%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK133,020124,340-6.5%
CALL_LEN1,576,7801,501,340-4.8%
CALL_NON_PY_GENERAL1,474,5001,405,760-4.7%
RETURN_VALUE43,059,36041,068,740-4.6%
BINARY_SUBSCR_LIST_INT4,352,4604,171,620-4.2%
COPY_FREE_VARS163,920158,700-3.2%
LOAD_DEREF5,570,8005,403,740-3.0%
MAKE_CELL1,751,0401,698,960-3.0%
CALL_KW_PY1,279,2801,250,880-2.2%
DICT_MERGE1,126,4001,117,720-0.8%
INTERPRETER_EXIT12,493,18012,493,1800.0%
LOAD_ATTR_INSTANCE_VALUE7,005,3007,005,3000.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS1,413,1001,413,1000.0%
CALL_FUNCTION_EX1,157,2801,157,2800.0%
YIELD_VALUE1,003,5201,003,5200.0%
CALL_KW_NON_PY655,220655,2200.0%
RETURN_GENERATOR501,760501,7600.0%
MAKE_FUNCTION481,280481,2800.0%
LIST_APPEND296,960296,9600.0%
STORE_DEREF174,080174,0800.0%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS122,840122,8400.0%
CHECK_EXC_MATCH112,640112,6400.0%
POP_EXCEPT112,640112,6400.0%
PUSH_EXC_INFO112,640112,6400.0%
LOAD_FAST_AND_CLEAR81,92081,9200.0%
SET_FUNCTION_ATTRIBUTE81,92081,9200.0%
CALL_STR_171,64071,6400.0%
UNARY_NOT61,44061,4400.0%
LOAD_FAST_CHECK61,44061,4400.0%
CALL_BUILTIN_CLASS61,44061,4400.0%
LIST_EXTEND51,28051,2800.0%
CALL_INTRINSIC_130,80030,8000.0%
END_FOR30,72030,7200.0%
CALL_BOUND_METHOD_GENERAL28,42028,4200.0%
DICT_UPDATE20,48020,4800.0%
BINARY_SUBSCR_GETITEM20,46020,4600.0%
CALL17,56017,5600.0%
END_SEND10,24010,2400.0%
GET_YIELD_FROM_ITER10,24010,2400.0%
IMPORT_NAME10,24010,2400.0%
MAP_ADD10,24010,2400.0%
BINARY_OP_ADD_FLOAT10,22010,2200.0%
BINARY_OP_SUBTRACT_FLOAT10,22010,2200.0%
LOAD_GLOBAL9,0409,0400.0%
RESUME3,5203,5200.0%
STORE_ATTR2,1402,1400.0%
CALL_KW1,7201,7200.0%
BINARY_OP7607600.0%
UNPACK_SEQUENCE4004000.0%
STORE_SUBSCR2402400.0%
SEND40400.0%
ENTER_EXECUTOR11,962,940
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
51,844,680100.0%10,176,860100.0%-80.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3800.0%3800.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
600.0%600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success380100.0%380100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3,573,760100.0%10,220100.0%-99.7%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,413,4803.9%21,1400.3%-98.5%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
34,784,92096.0%6,785,58099.2%-80.5%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
31,3000.1%31,3000.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure70042.7%32025.4%-54.3%
Success94057.3%94074.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
out of range54077.1%16050.0%-70.4%
list slice16022.9%16050.0%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
113,223,04097.2%70,526,80095.8%-37.7%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
3,258,9402.8%3,106,2804.2%-4.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
8,7800.0%8,7800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success71,060100.0%68,180100.0%-4.1%
Failure00.0%00.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
init not inline values2020 / 0 !!2020 / 0 !!0.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
86050.0%86050.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
37,262,86061.4%5,504,58029.9%-85.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
23,429,62038.6%12,898,20070.1%-44.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure7,58093.8%4,88090.7%-35.6%
Success5006.2%5009.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
different types4606.1%1603.3%-65.2%
baseobject7,10093.7%4,72096.7%-33.5%
list200.3%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
92,4600.5%6,7600.1%-92.7%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
17,735,62091.2%7,237,78081.6%-59.2%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1,627,9008.4%1,627,88018.3%-0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure3801.2%2400.8%-36.8%
Success31,00098.8%31,00099.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple16042.1%10041.7%-37.5%
list22057.9%14058.3%-36.4%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
3,419,80016.8%744,18015.3%-78.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
16,968,12083.2%4,126,08084.7%-75.7%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure5,82093.0%2,46084.8%-57.7%
Success4407.0%44015.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
dict items2,92050.2%1,04042.3%-64.4%
enumerate74012.7%32013.0%-56.8%
ascii string1,08018.6%54022.0%-50.0%
dict keys1,08018.6%56022.8%-48.1%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
11,825,0002.6%3,899,2202.3%-67.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
424,629,90091.7%145,521,66087.5%-65.7%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
1,266,5000.3%455,7400.3%-64.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
26,411,3605.7%16,922,50010.2%-35.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success235,66089.6%86,18077.8%-63.4%
Failure27,46010.4%24,66022.2%-10.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
class method obj8403.1%6802.8%-19.0%
mutable class22,40081.6%19,86080.5%-11.3%
method3,74013.6%3,70015.0%-1.1%
overridden1600.6%1600.6%0.0%
expected error1600.6%1600.6%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
80,027,320100.0%47,422,620100.0%-40.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4,5200.0%4,5200.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
4,2400.0%4,2400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success4,600100.0%4,600100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### SEND + +
+ specialization stats for SEND family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
81,900100.0%12,98099.7%-84.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.0%200.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
91,501,64093.2%13,102,58075.8%-85.7%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
6,713,0806.8%4,188,26024.2%-37.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
9000.0%9000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success127,900100.0%80,280100.0%-37.2%
Failure00.0%00.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
460,68099.9%401,06099.9%-12.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1200.0%1200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success120100.0%120100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
188,6200.2%45,5600.1%-75.8%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
10,545,16010.2%2,874,5607.4%-72.7%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
92,768,12089.6%36,153,38092.5%-61.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success202,98099.7%58,28099.1%-71.3%
Failure5600.3%5000.9%-10.7%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
sequence24042.9%18036.0%-25.0%
other16028.6%16032.0%0.0%
dict16028.6%16032.0%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
10,372,920100.0%3,594,420100.0%-65.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2000.0%2000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success200100.0%200100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
1,094,789,58044.3%432,814,54042.3%-60.5%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
1,269,919,50051.4%540,748,46052.8%-57.4%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
34,006,2601.4%15,732,6201.5%-53.7%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
72,170,4602.9%34,114,0603.3%-52.7%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
BINARY_SLICE3,573,7605.0%10,2200.0%-99.7%
BINARY_SUBSCR1,413,4802.0%21,1400.1%-98.5%
CONTAINS_OP92,4600.1%6,7600.0%-92.7%
TO_BOOL188,6200.3%45,5600.1%-75.8%
FOR_ITER16,968,12023.5%4,126,08012.1%-75.7%
COMPARE_OP23,429,62032.5%12,898,20037.9%-44.9%
LOAD_ATTR26,411,36036.6%16,922,50049.7%-35.9%
CALL8,7800.0%8,7800.0%0.0%
LOAD_GLOBAL4,5200.0%4,5200.0%0.0%
STORE_ATTR9000.0%9000.0%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
TO_BOOL_ALWAYS_TRUE4,627,88013.6%761,5404.8%-83.5%
LOAD_ATTR_SLOT6,643,34019.5%1,938,24012.3%-70.8%
TO_BOOL_NONE4,154,72012.2%1,321,0208.4%-68.2%
STORE_ATTR_SLOT6,713,08019.7%4,188,26026.6%-37.6%
CALL_BOUND_METHOD_EXACT_ARGS1,597,8604.7%1,179,1607.5%-26.2%
CALL_PY_EXACT_ARGS1,627,7404.8%1,905,92012.1%17.1%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES3,707,36010.9%
LOAD_ATTR_METHOD_WITH_VALUES1,413,0804.2%1,413,0809.0%0.0%
TO_BOOL_STR1,049,4003.1%
CONTAINS_OP_SET814,0802.4%814,0805.2%0.0%
CONTAINS_OP_DICT813,8005.2%
TO_BOOL_BOOL658,0804.2%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault12,493,18014.0%12,493,18014.0%0.0%
Calls to Python functions inlined77,004,58086.0%77,004,58086.0%0.0%
Calls via PyEval_EvalFrame (total)12,493,18014.0%12,493,18014.0%0.0%
Calls via PyEval_EvalFrame (vector)11,274,56012.6%11,274,56012.6%0.0%
Calls via PyEval_EvalFrame (generator)1,218,6201.4%1,218,6201.4%0.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)11,274,56012.6%11,274,56012.6%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)1,126,4201.3%1,126,4201.3%0.0%
Calls via PyEval_EvalFrame (function ex)30,8800.0%30,8800.0%0.0%
Calls via PyEval_EvalFrame (api)6,881,5807.7%6,881,5807.7%0.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created112,6400.1%112,6400.1%0.0%
Frames pushed87,992,48098.3%87,992,48098.3%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache dunder misses199,876235,53217.8%
Interpreter immortal increfs360,364,98018.5%315,480,28016.0%-12.5%
Method cache misses2,469,8192,191,186-11.3%
Method cache collisions2,663,8312,420,590-9.1%
Interpreter mortal increfs1,155,134,86059.3%1,237,811,34062.7%7.2%
Interpreter mortal decrefs1,264,049,54062.7%1,344,323,66063.8%6.4%
Interpreter immortal decrefs411,050,86020.4%427,727,40020.3%4.1%
Allocations to 4 kbytes71,6800.1%74,3200.1%3.7%
Method cache hits68,523,68166,615,834-2.8%
Immortal decrefs175,849,0058.7%171,450,5278.1%-2.5%
Mortal increfs185,324,8059.5%180,904,5289.2%-2.4%
Method cache dunder hits29,573,12428,979,728-2.0%
Immortal increfs245,579,81112.6%241,105,15512.2%-1.8%
Mortal decrefs164,168,3378.1%162,138,9237.7%-1.2%
Frees73,320,42973,311,935-0.0%
Allocations from freelist22,268,14023.1%22,269,64023.1%0.0%
Frees to freelist22,266,80022,268,2600.0%
Allocations74,145,40076.9%74,149,26076.9%0.0%
Allocations to 512 bytes74,073,72076.8%74,074,88076.8%0.0%
Allocations over 4 kbytes00.0%600.0%60 / 0 !!
Inline values1,710,0801,710,0800.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
11,6202,231,64031,999,0801,6202,226,36031,992,740
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-sqlite_synth-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-sqlite_synth-vs-base.md new file mode 100644 index 00000000..d5560a67 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-sqlite_synth-vs-base.md @@ -0,0 +1,2120 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
FOR_ITER_RANGE5,242,940360-100.0%
CALL_BUILTIN_O10,485,720720-100.0%
COMPARE_OP_FLOAT10,485,720720-100.0%
CALL_STR_15,242,860360-100.0%
UNPACK_SEQUENCE_TUPLE5,242,860360-100.0%
STORE_FAST_STORE_FAST5,242,880380-100.0%
BUILD_LIST5,242,960460-100.0%
FOR_ITER5,244,480480-100.0%
JUMP_BACKWARD10,486,320960-100.0%
LOAD_ATTR_MODULE10,486,0201,020-100.0%
CALL_METHOD_DESCRIPTOR_FAST5,243,100600-100.0%
PUSH_NULL10,486,2401,240-100.0%
POP_JUMP_IF_FALSE10,486,2401,240-100.0%
LOAD_GLOBAL_MODULE10,486,3201,320-100.0%
STORE_FAST15,729,7602,040-100.0%
LOAD_ATTR_METHOD_NO_DICT5,243,420920-100.0%
LOAD_FAST_LOAD_FAST5,243,8401,120-100.0%
POP_TOP5,244,0001,740-100.0%
LOAD_FAST52,431,04020,976,020-60.0%
LOAD_GLOBAL_BUILTIN10,487,1205,244,400-50.0%
LOAD_CONST10,486,9605,244,460-50.0%
FOR_ITER_TUPLE720420-41.7%
NOP560360-35.7%
COPY15,728,64010,486,140-33.3%
SWAP15,728,64010,486,140-33.3%
CALL_BUILTIN_FAST800580-27.5%
LOAD_ATTR_INSTANCE_VALUE10,485,84010,485,8400.0%
STORE_ATTR_INSTANCE_VALUE10,485,84010,485,8400.0%
BINARY_OP_ADD_INT10,485,72010,485,7200.0%
RESUME_CHECK5,243,3405,243,3400.0%
INTERPRETER_EXIT5,243,2005,243,2000.0%
RETURN_CONST5,242,9605,242,9600.0%
POP_JUMP_IF_NONE5,242,8805,242,8800.0%
CALL_LEN5,242,8605,242,8600.0%
LOAD_ATTR8008000.0%
CALL7607600.0%
LOAD_DEREF5605600.0%
RETURN_VALUE4804800.0%
LOAD_GLOBAL4804800.0%
CALL_NON_PY_GENERAL4604600.0%
STORE_ATTR3603600.0%
CHECK_EXC_MATCH3203200.0%
GET_ITER3203200.0%
POP_EXCEPT3203200.0%
PUSH_EXC_INFO3203200.0%
BINARY_OP2202200.0%
MAKE_FUNCTION1601600.0%
BUILD_TUPLE1601600.0%
CALL_FUNCTION_EX1601600.0%
COPY_FREE_VARS1601600.0%
MAKE_CELL1601600.0%
SET_FUNCTION_ATTRIBUTE1601600.0%
CALL_BUILTIN_CLASS1201200.0%
CALL_METHOD_DESCRIPTOR_NOARGS1201200.0%
RESUME1001000.0%
BUILD_MAP80800.0%
CALL_INTRINSIC_180800.0%
COMPARE_OP80800.0%
JUMP_FORWARD80800.0%
LIST_EXTEND80800.0%
CALL_ISINSTANCE80800.0%
CALL_PY_GENERAL80800.0%
COMPARE_OP_INT80800.0%
TO_BOOL_BOOL80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
BINARY_SUBSCR_TUPLE_INT60600.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS60600.0%
BINARY_SUBSCR40400.0%
UNPACK_SEQUENCE40400.0%
ENTER_EXECUTOR360
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1400.0%1400.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
10,485,780100.0%10,485,780100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success6075.0%6075.0%0.0%
Failure2025.0%2025.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
true divide different types20100.0%20100.0%0.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2020.0%2020.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6060.0%6060.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
26,215,720100.0%5,245,500100.0%-80.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3800.0%3800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success380100.0%380100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
10,485,800100.0%80090.9%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.0%404.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5,242,98050.0%40031.7%-100.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
5,243,66050.0%78061.9%-100.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,48098.7%6075.0%-95.9%
Success201.3%2025.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other1,480100.0%60100.0%-95.9%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
26,215,280100.0%10,487,780100.0%-60.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4000.0%4000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success400100.0%400100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
20,973,440100.0%5,245,720100.0%-75.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2400.0%2400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success240100.0%240100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2400.0%2400.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
10,485,840100.0%10,485,840100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success8066.7%8066.7%0.0%
Failure4033.3%4033.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
not managed dict40100.0%40100.0%0.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
80100.0%80100.0%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
5,242,860100.0%36090.0%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.0%205.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
5,247,2601.7%3,2600.0%-99.9%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
178,270,82058.6%62,935,40057.1%-64.7%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
120,592,40039.7%47,196,58042.9%-60.9%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
00.0%00.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
FOR_ITER5,242,980100.0%40021.3%-100.0%
LOAD_ATTR4000.0%40021.3%0.0%
CALL3800.0%38020.2%0.0%
LOAD_GLOBAL2400.0%24012.8%0.0%
STORE_ATTR2400.0%24012.8%0.0%
BINARY_OP1400.0%1407.4%0.0%
COMPARE_OP400.0%402.1%0.0%
BINARY_SUBSCR200.0%201.1%0.0%
UNPACK_SEQUENCE200.0%201.1%0.0%
BINARY_SLICE00.0%00.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault5,243,200100.0%5,243,200100.0%0.0%
Calls to Python functions inlined2400.0%2400.0%0.0%
Calls via PyEval_EvalFrame (total)5,243,200100.0%5,243,200100.0%0.0%
Calls via PyEval_EvalFrame (vector)5,243,200100.0%5,243,200100.0%0.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)5,243,200100.0%5,243,200100.0%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)1600.0%1600.0%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)800.0%800.0%0.0%
Frame objects created800.0%800.0%0.0%
Frames pushed5,243,440100.0%5,243,440100.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Interpreter immortal increfs15,867,2404.4%10,624,7403.1%-33.0%
Method cache dunder misses2092247.2%
Interpreter mortal increfs162,402,36044.9%151,917,72043.9%-6.5%
Interpreter mortal decrefs193,831,82043.5%183,347,18042.1%-5.4%
Method cache collisions3033154.0%
Method cache misses2432492.5%
Method cache dunder hits771756-1.9%
Interpreter immortal decrefs10,655,3002.4%10,655,7602.4%0.0%
Mortal increfs94,390,14926.1%94,394,12427.3%0.0%
Mortal decrefs209,681,63447.0%209,687,60148.2%0.0%
Frees78,560,99478,562,8630.0%
Immortal increfs89,049,89524.6%89,050,04225.7%0.0%
Allocations73,291,76048.2%73,291,86048.2%0.0%
Allocations from freelist78,672,52051.8%78,672,62051.8%0.0%
Frees to freelist78,672,58078,672,6800.0%
Method cache hits5,244,2775,244,271-0.0%
Immortal decrefs31,572,8307.1%31,572,8657.3%0.0%
Allocations to 512 bytes73,291,76048.2%73,291,76048.2%0.0%
Allocations to 4 kbytes00.0%1000.0%100 / 0 !!
Allocations over 4 kbytes00.0%00.0%
Inline values80800.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-sympy-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-sympy-vs-base.md new file mode 100644 index 00000000..550059f1 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-sympy-vs-base.md @@ -0,0 +1,4226 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
RERAISE3,68032,842792.4%
JUMP_BACKWARD178,847,851951,506-99.5%
STORE_SUBSCR3,987,483206,167-94.8%
CONTAINS_OP29,094,0662,036,356-93.0%
FOR_ITER_RANGE17,777,0381,349,228-92.4%
CONTAINS_OP_DICT32,718,9163,551,237-89.1%
BINARY_OP_ADD_INT18,426,7492,522,475-86.3%
FOR_ITER_LIST70,538,55810,340,405-85.3%
BINARY_SUBSCR26,653,5424,046,573-84.8%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK20,873,7793,312,402-84.1%
DELETE_FAST1,341,900251,927-81.2%
FOR_ITER107,500,82127,586,644-74.3%
SET_FUNCTION_ATTRIBUTE11,124,3472,869,791-74.2%
TO_BOOL_STR526,960139,482-73.5%
MAKE_FUNCTION15,261,8544,141,179-72.9%
FOR_ITER_TUPLE37,137,53610,473,333-71.8%
CALL_KW_NON_PY930,526264,166-71.6%
BINARY_OP_ADD_UNICODE586,620166,588-71.6%
POP_JUMP_IF_NONE13,605,1263,891,170-71.4%
LIST_APPEND6,465,8111,888,696-70.8%
STORE_FAST_LOAD_FAST5,730,2071,686,513-70.6%
SET_ADD36,88011,420-69.0%
PUSH_NULL76,267,18123,996,332-68.5%
FOR_ITER_GEN297,09893,681-68.5%
RETURN_GENERATOR15,573,3085,103,023-67.2%
CALL_BUILTIN_O49,399,91917,300,281-65.0%
EXTENDED_ARG22,071,9767,884,483-64.3%
STORE_SLICE2,480920-62.9%
CALL_METHOD_DESCRIPTOR_NOARGS35,319,13113,512,018-61.7%
UNPACK_SEQUENCE_TWO_TUPLE106,934,29141,997,794-60.7%
LOAD_ATTR_CLASS2,177,012859,347-60.5%
LOAD_NAME178,82071,900-59.8%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES2,273,169916,008-59.7%
STORE_FAST_STORE_FAST109,028,50244,916,533-58.8%
COPY5,122,1922,145,879-58.1%
BINARY_SUBSCR_DICT3,870,8531,682,050-56.5%
POP_JUMP_IF_NOT_NONE48,825,71221,873,619-55.2%
LOAD_ATTR_METHOD_WITH_VALUES33,825,31115,638,845-53.8%
LOAD_ATTR_SLOT100,815,10246,715,228-53.7%
CALL_BOUND_METHOD_EXACT_ARGS29,626,72714,032,614-52.6%
BINARY_SUBSCR_LIST_INT41,325,14619,845,252-52.0%
BINARY_OP_ADD_FLOAT620300-51.6%
LOAD_FAST_LOAD_FAST299,077,849144,856,756-51.6%
POP_JUMP_IF_TRUE106,166,90852,105,779-50.9%
STORE_FAST407,956,459202,489,748-50.4%
CALL_METHOD_DESCRIPTOR_O4,856,9562,444,709-49.7%
TO_BOOL_LIST2,866,1571,472,734-48.6%
BUILD_SET94,89249,881-47.4%
CALL_KW_BOUND_METHOD6,6803,540-47.0%
COPY_FREE_VARS34,301,97518,366,542-46.5%
COMPARE_OP_INT60,514,23332,924,730-45.6%
SEND_GEN1,891,0361,029,804-45.5%
CALL_PY_EXACT_ARGS72,834,80040,268,834-44.7%
BUILD_TUPLE58,769,02433,387,185-43.2%
LOAD_FAST1,065,347,880609,143,047-42.8%
LOAD_DEREF73,492,02042,244,708-42.5%
STORE_ATTR_SLOT9,523,4025,484,978-42.4%
LOAD_ATTR_METHOD_NO_DICT99,432,04357,554,022-42.1%
POP_JUMP_IF_FALSE297,701,397177,388,832-40.4%
MAP_ADD7,924,8444,746,193-40.1%
LOAD_ATTR_MODULE1,300,460779,431-40.1%
LOAD_ATTR107,683,04964,544,165-40.1%
SWAP51,785,66231,042,006-40.1%
BINARY_OP_SUBTRACT_FLOAT800480-40.0%
DICT_MERGE23,958,98014,402,671-39.9%
LOAD_GLOBAL_MODULE152,624,74992,482,592-39.4%
CALL_PY_GENERAL6,446,3363,917,629-39.2%
BINARY_OP_SUBTRACT_INT2,540,1081,549,220-39.0%
STORE_SUBSCR_LIST_INT30,948,83719,065,076-38.4%
BINARY_SLICE87,36053,840-38.4%
COMPARE_OP39,871,40924,647,161-38.2%
GET_ITER63,436,84939,409,687-37.9%
JUMP_BACKWARD_NO_INTERRUPT1,793,1051,121,280-37.5%
GET_YIELD_FROM_ITER846,896532,144-37.2%
CALL_BUILTIN_FAST45,723,85728,782,975-37.1%
CALL_TYPE_117,371,08710,939,149-37.0%
BUILD_LIST22,451,45114,266,604-36.5%
IS_OP50,479,12732,206,542-36.2%
RESUME_CHECK278,685,501178,475,115-36.0%
CONTAINS_OP_SET219,946141,773-35.5%
END_SEND805,440519,360-35.5%
BUILD_MAP34,882,74622,579,246-35.3%
END_FOR34,40222,487-34.6%
LOAD_CONST207,674,320135,903,253-34.6%
NOP36,841,18324,676,746-33.0%
TO_BOOL_NONE3,914,7562,628,398-32.9%
BINARY_SUBSCR_GETITEM177,146121,014-31.7%
TO_BOOL_BOOL179,765,863124,620,238-30.7%
MAKE_CELL6,515,9804,564,192-30.0%
LOAD_ATTR_PROPERTY30,653,62321,741,284-29.1%
CALL_ISINSTANCE70,123,65350,050,539-28.6%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS6,6204,740-28.4%
LOAD_GLOBAL_BUILTIN244,741,773175,267,572-28.4%
LOAD_ATTR_NONDESCRIPTOR_NO_DICT61,130,71044,135,780-27.8%
LOAD_FAST_AND_CLEAR17,227,79112,470,078-27.6%
CALL_NON_PY_GENERAL23,265,17117,410,942-25.2%
STORE_DEREF9,010,9036,851,575-24.0%
CALL_BUILTIN_CLASS10,690,9378,231,781-23.0%
TO_BOOL_INT20,036,33015,488,324-22.7%
CHECK_EXC_MATCH1,166,874906,461-22.3%
POP_EXCEPT1,166,874906,461-22.3%
PUSH_EXC_INFO1,166,874906,461-22.3%
UNPACK_SEQUENCE_LIST208,237162,013-22.2%
STORE_NAME175,840139,060-20.9%
UNARY_NEGATIVE671,258533,012-20.6%
IMPORT_NAME8,287,2496,681,744-19.4%
IMPORT_FROM9,595,2767,798,691-18.7%
JUMP_FORWARD6,212,7055,080,428-18.2%
LOAD_ATTR_INSTANCE_VALUE10,922,6448,995,106-17.6%
CALL_LIST_APPEND24,467,53420,157,615-17.6%
BINARY_OP36,117,35130,086,423-16.7%
POP_TOP67,388,00856,158,140-16.7%
STORE_ATTR_INSTANCE_VALUE3,753,5643,131,767-16.6%
CALL_TUPLE_16,020,1245,066,372-15.8%
RAISE_VARARGS140,846119,032-15.5%
LOAD_SPECIAL74,84063,800-14.8%
CALL_METHOD_DESCRIPTOR_FAST24,832,77621,237,909-14.5%
BINARY_SUBSCR_TUPLE_INT9,796,1008,392,115-14.3%
CALL_LEN29,130,35525,015,210-14.1%
COMPARE_OP_STR15,005,42413,187,625-12.1%
COMPARE_OP_FLOAT617,273543,671-11.9%
YIELD_VALUE25,600,30822,735,291-11.2%
STORE_ATTR457,768411,794-10.0%
STORE_SUBSCR_DICT2,341,6442,110,461-9.9%
TO_BOOL_ALWAYS_TRUE252,423227,708-9.8%
UNARY_NOT5,414,3544,898,211-9.5%
CALL_ALLOC_AND_ENTER_INIT953,982867,267-9.1%
BINARY_OP_MULTIPLY_INT2,836,2782,594,415-8.5%
CALL_KW_PY10,313,3039,434,531-8.5%
RETURN_CONST61,192,96156,033,884-8.4%
RETURN_VALUE192,349,578178,055,851-7.4%
UNPACK_SEQUENCE42,65239,616-7.1%
EXIT_INIT_CHECK953,660887,714-6.9%
LOAD_SUPER_ATTR_METHOD1,897,6691,784,046-6.0%
INTERPRETER_EXIT133,965,973126,011,271-5.9%
UNPACK_SEQUENCE_TUPLE1,692,1861,591,736-5.9%
SEND466,120442,840-5.0%
CALL_BOUND_METHOD_GENERAL220,636210,290-4.7%
LIST_EXTEND1,407,4221,348,924-4.2%
CALL_FUNCTION_EX28,949,32028,011,847-3.2%
LOAD_SUPER_ATTR_ATTR1,221,3591,181,912-3.2%
TO_BOOL13,031,20912,668,588-2.8%
CALL_BUILTIN_FAST_WITH_KEYWORDS5,846,2685,719,136-2.2%
LOAD_FAST_CHECK1,604,2601,572,599-2.0%
CALL_INTRINSIC_11,407,0621,379,646-1.9%
BUILD_STRING143,500140,940-1.8%
CONVERT_VALUE287,680282,560-1.8%
FORMAT_SIMPLE287,720282,600-1.8%
CALL_STR_1236,280233,080-1.4%
BINARY_SUBSCR_STR_INT19,50019,260-1.2%
LOAD_SUPER_ATTR1,2041,203-0.1%
CALL_KW12,76812,766-0.0%
LOAD_GLOBAL181,910181,883-0.0%
CALL262,631262,609-0.0%
RESUME47,56647,5660.0%
DELETE_SUBSCR3,1003,1000.0%
LOAD_BUILD_CLASS2,6602,6600.0%
LOAD_LOCALS2,5402,5400.0%
BINARY_OP_INPLACE_ADD_UNICODE2,0402,0400.0%
LOAD_ATTR_METHOD_LAZY_DICT1,8401,8400.0%
DELETE_NAME1201200.0%
BINARY_OP_MULTIPLY_FLOAT60600.0%
DICT_UPDATE20200.0%
STORE_GLOBAL20200.0%
ENTER_EXECUTOR118,238,228
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
24,393,15540.3%6,835,45818.5%-72.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
36,057,07959.6%30,031,04781.3%-16.7%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1200.0%1200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure53,54288.8%48,65487.9%-9.1%
Success6,73011.2%6,72212.1%-0.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
lshift2650.5%2230.5%-15.8%
add different types2,1344.0%1,8043.7%-15.5%
remainder2,4154.5%2,0514.2%-15.1%
multiply different types7,96314.9%6,80914.0%-14.5%
subtract other7,02013.1%6,08012.5%-13.4%
multiply other2,4204.5%2,1274.4%-12.1%
floor divide1,3122.5%1,1722.4%-10.7%
subtract different types1,2902.4%1,1882.4%-7.9%
and int4,1607.8%3,8848.0%-6.6%
and other3970.7%3710.8%-6.5%
power3,0615.7%2,8615.9%-6.5%
xor6231.2%5831.2%-6.4%
true divide other3200.6%3000.6%-6.2%
true divide different types2,6835.0%2,5235.2%-6.0%
add other9,71218.1%9,15118.8%-5.8%
rshift4,0247.5%3,8247.9%-5.0%
or3,7407.0%3,7007.6%-1.1%
true divide float30.0%30.0%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
87,360100.0%53,840100.0%-38.4%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
26,623,84232.5%4,025,28211.8%-84.9%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
54,4100.1%14,9100.0%-72.6%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
55,134,33567.4%30,044,78188.1%-45.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure22,12472.2%13,79664.1%-37.6%
Success8,53627.8%7,73535.9%-9.4%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
out of range3,72016.8%1,96014.2%-47.3%
other13,01958.8%7,25152.6%-44.3%
buffer int1,7808.0%1,2208.8%-31.5%
list slice1,2805.8%1,1808.6%-7.8%
tuple slice2,30510.4%2,16515.7%-6.1%
array int200.1%200.1%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
44,8000.0%22,2000.0%-50.4%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
423,648,93592.6%248,531,55189.3%-41.3%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
33,566,0157.3%29,388,43910.6%-12.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
167,5570.0%167,5550.1%-0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success731,753100.0%653,013100.0%-10.8%
Failure00.0%00.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
init not inline values260260 / 0 !!260260 / 0 !!0.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
4,22024.8%3,58021.9%-15.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
7,98647.0%7,98648.9%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
75,579,79165.2%46,154,13164.7%-38.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
39,789,31934.3%24,572,37034.5%-38.2%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
557,1390.5%501,8950.7%-9.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure72,44278.4%65,14977.5%-10.1%
Success19,94821.6%18,89922.5%-5.3%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
bool2,2383.1%4600.7%-79.4%
other15,69021.7%13,45520.7%-14.2%
set3190.4%2800.4%-12.2%
big int19,49526.9%17,65027.1%-9.5%
list2400.3%2200.3%-8.3%
baseobject3000.4%2800.4%-6.7%
different types12,90617.8%12,13618.6%-6.0%
float long3600.5%3400.5%-5.6%
tuple10,29414.2%9,92815.2%-3.6%
string10,52014.5%10,32015.8%-1.9%
long float800.1%800.1%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
29,075,48146.9%2,025,12135.3%-93.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
32,937,66253.1%3,691,81064.4%-88.8%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1,2000.0%1,2000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure17,34593.3%9,99589.0%-42.4%
Success1,2406.7%1,24011.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other10,02757.8%3,57535.8%-64.3%
list1,2207.0%9009.0%-26.2%
str3402.0%2802.8%-17.6%
tuple5,75833.2%5,24052.4%-9.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1,686,5390.7%123,7040.2%-92.7%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
124,063,69153.2%22,132,94344.4%-82.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
107,385,18046.0%27,538,75155.3%-74.4%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success43,69729.7%14,23728.4%-67.4%
Failure103,62370.3%35,87371.6%-65.4%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
dict items74,06571.5%17,43348.6%-76.5%
set9,9269.6%4,11311.5%-58.6%
zip7,6607.4%4,72013.2%-38.4%
other2,8802.8%1,9615.5%-31.9%
enumerate4,3524.2%3,4669.7%-20.4%
ascii string1000.1%800.2%-20.0%
dict keys1,6601.6%1,4003.9%-15.7%
reversed list9200.9%7802.2%-15.2%
itertools1,9801.9%1,8405.1%-7.1%
dict values800.1%800.2%0.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
73,458,34115.6%35,097,42613.2%-52.2%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
289,947,35261.5%165,551,86762.4%-42.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
107,447,81022.8%64,328,32524.3%-40.1%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
37,4400.0%22,5000.0%-39.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,471,45691.3%746,23785.9%-49.3%
Failure140,4728.7%122,71514.1%-12.6%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
module attr not found400.0%600.0%50.0%
method12,2238.7%7,8056.4%-36.1%
builtin class method1,3601.0%8800.7%-35.3%
non object slot5600.4%4400.4%-21.4%
non overriding descriptor11,5868.2%9,3157.6%-19.6%
property1400.1%1200.1%-14.3%
metaclass attribute16,96012.1%15,12012.3%-10.8%
class method obj13,1649.4%11,8689.7%-9.8%
expected error5,3203.8%4,8003.9%-9.8%
mutable class65,60546.7%59,68548.6%-9.0%
overridden9,4946.8%8,9227.3%-6.0%
overriding descriptor1400.1%1400.1%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
397,346,14299.9%267,729,78499.9%-32.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
90,0840.0%90,0810.0%-0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
20,3800.0%20,3800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success91,986100.0%91,962100.0%-0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_SUPER_ATTR + +
+ specialization stats for LOAD_SUPER_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
3,119,028100.0%2,965,958100.0%-4.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6040.0%6030.0%-0.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success600100.0%600100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### SEND + +
+ specialization stats for SEND family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,846,19678.3%999,14467.8%-45.9%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
44,8401.9%30,6602.1%-31.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
461,60019.6%439,72029.9%-4.7%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure4,50083.6%3,08083.2%-31.6%
Success88016.4%62016.8%-29.5%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
list4,500100.0%3,080100.0%-31.6%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
2,502,21718.2%535,8815.9%-78.6%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
10,774,74978.4%8,080,86489.5%-25.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
448,9423.3%402,9884.5%-10.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success52,16993.3%15,05980.3%-71.1%
Failure3,7266.7%3,70619.7%-0.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
overridden2607.0%2406.5%-7.7%
class attr simple1,96052.6%1,96052.9%0.0%
not managed dict1,44638.8%1,44639.0%0.0%
not in keys601.6%601.6%0.0%
+ + +
+ +### STORE_SLICE + +
+ specialization stats for STORE_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,480100.0%920100.0%-62.9%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3,980,86110.7%200,5710.9%-95.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
33,290,48189.3%21,175,53799.0%-36.4%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure3,90058.9%2,87651.4%-26.3%
Success2,72241.1%2,72048.6%-0.1%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
dict subclass no override3,900100.0%2,876100.0%-26.3%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
978,9710.4%440,3790.3%-55.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
206,228,12593.6%143,991,82091.7%-30.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
12,947,4285.9%12,593,1788.0%-2.7%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure31,14030.8%22,77927.6%-26.8%
Success69,87569.2%59,74472.4%-14.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other4,00212.9%1,6307.2%-59.3%
tuple16,11251.7%10,84047.6%-32.7%
dict2,4607.9%2,0809.1%-15.4%
set1,5935.1%1,4296.3%-10.3%
number3,67311.8%3,50015.4%-4.7%
mapping3,26010.5%3,26014.3%0.0%
float400.1%400.2%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
108,834,714100.0%43,751,54399.9%-59.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
30,4670.0%27,4610.1%-9.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure7976.5%7716.3%-3.3%
Success11,38893.5%11,38493.7%-0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
sequence73792.5%71192.2%-3.5%
iterator607.5%607.8%0.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
365,453,8235.6%167,229,5484.4%-54.2%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
2,077,389,73832.0%1,207,437,48331.7%-41.9%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
112,874,3921.7%66,159,8391.7%-41.4%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
3,937,729,89860.6%2,366,292,23762.2%-39.9%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
STORE_SUBSCR3,980,8611.1%200,5710.1%-95.0%
CONTAINS_OP29,075,4818.0%2,025,1211.2%-93.0%
BINARY_SUBSCR26,623,8427.3%4,025,2822.4%-84.9%
FOR_ITER107,385,18029.5%27,538,75116.5%-74.4%
LOAD_ATTR107,447,81029.5%64,328,32538.6%-40.1%
COMPARE_OP39,789,31910.9%24,572,37014.8%-38.2%
BINARY_OP36,057,0799.9%30,031,04718.0%-16.7%
STORE_ATTR448,9420.1%402,9880.2%-10.2%
SEND461,6000.1%439,7200.3%-4.7%
TO_BOOL12,947,4283.6%12,593,1787.6%-2.7%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
STORE_ATTR_SLOT2,500,2572.2%534,9010.8%-78.6%
LOAD_ATTR_SLOT39,442,12834.9%13,879,33021.0%-64.8%
LOAD_ATTR_NONDESCRIPTOR_NO_DICT18,241,03816.2%10,871,76616.4%-40.4%
LOAD_ATTR_METHOD_NO_DICT9,520,2678.4%5,962,3999.0%-37.4%
LOAD_ATTR_PROPERTY5,254,1394.7%3,803,9235.7%-27.6%
CALL_PY_EXACT_ARGS8,307,9407.4%6,039,3079.1%-27.3%
CALL_METHOD_DESCRIPTOR_FAST15,684,81513.9%14,098,89821.3%-10.1%
CALL_BUILTIN_O2,732,6052.4%2,661,1674.0%-2.6%
CALL_METHOD_DESCRIPTOR_NOARGS6,609,2935.9%6,512,1939.8%-1.5%
FOR_ITER_LIST858,9820.8%
COMPARE_OP_INT500,2950.8%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Frame objects created1,639,7070.6%1,348,7960.5%-17.7%
Calls to Python functions inlined160,081,45454.4%146,111,96753.6%-8.7%
Calls via PyEval_EvalFrame (generator)31,464,10110.7%28,862,65210.6%-8.3%
Frames pushed261,631,38088.9%243,178,56289.3%-7.1%
Calls via PyEval_EvalFrame (api)56,592,36619.2%52,933,60919.4%-6.5%
Calls to PyEval_EvalDefault134,224,92145.6%126,245,62346.4%-5.9%
Calls via PyEval_EvalFrame (total)134,224,92145.6%126,245,62346.4%-5.9%
Calls via PyEval_EvalFrame (function vectorcall)102,753,52034.9%97,375,67135.8%-5.2%
Calls via PyEval_EvalFrame (vector)102,760,82034.9%97,382,97135.8%-5.2%
Calls via PyEval_EvalFrame (slot)24,800,8348.4%23,780,7008.7%-4.1%
Calls via PyEval_EvalFrame (function ex)12,040,5364.1%11,824,5714.3%-1.8%
Calls via PyEval_EvalFrame (legacy)4,6400.0%4,6400.0%0.0%
Calls via PyEval_EvalFrame (build class)2,6600.0%2,6600.0%0.0%
Calls via PyEval_EvalFrame (method)6,9600.0%6,9600.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache misses5,499,7743,756,853-31.7%
Method cache collisions7,334,7595,043,421-31.2%
Method cache dunder misses1,840,6191,290,521-29.9%
Method cache hits219,134,495184,725,960-15.7%
Interpreter immortal increfs1,076,677,95615.9%917,874,58114.0%-14.7%
Inline values1,509,0141,392,704-7.7%
Mortal increfs1,501,320,61722.1%1,385,998,57921.1%-7.7%
Allocations to 512 bytes325,629,75446.4%301,202,37845.2%-7.5%
Allocations326,746,46646.6%302,321,40545.4%-7.5%
Frees341,350,282316,282,348-7.3%
Immortal increfs1,435,276,08921.1%1,331,703,77620.3%-7.2%
Method cache dunder hits361,602,904338,259,243-6.5%
Immortal decrefs1,451,690,27019.2%1,367,469,20818.2%-5.8%
Interpreter mortal increfs2,775,589,01940.9%2,936,161,95044.7%5.8%
Mortal decrefs1,688,523,99922.3%1,597,201,80521.3%-5.4%
Interpreter mortal decrefs3,204,705,24742.3%3,308,323,93944.1%3.2%
Allocations from freelist374,550,08253.4%363,996,77354.6%-2.8%
Frees to freelist374,788,920364,235,611-2.8%
Allocations over 4 kbytes25,1000.0%24,4600.0%-2.5%
Allocations to 4 kbytes1,091,6120.2%1,094,5670.2%0.3%
Interpreter immortal decrefs1,230,159,68516.2%1,229,010,66816.4%-0.1%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
08080 / 0 !!
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
08080 / 0 !!
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files80800.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-telco-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-telco-vs-base.md new file mode 100644 index 00000000..42b6ec52 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-telco-vs-base.md @@ -0,0 +1,2223 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD6,401,280640-100.0%
BINARY_SUBSCR_LIST_INT6,399,980660-100.0%
CALL_BUILTIN_FAST6,399,980660-100.0%
TO_BOOL_INT6,399,980660-100.0%
UNPACK_SEQUENCE_TUPLE6,399,980660-100.0%
POP_JUMP_IF_FALSE12,800,0001,360-100.0%
COMPARE_OP6,401,760760-100.0%
LOAD_ATTR_METHOD_NO_DICT9,608,9201,160-100.0%
STORE_FAST83,241,76013,140-100.0%
BINARY_OP48,040,4207,620-100.0%
FOR_ITER_RANGE6,402,6001,020-100.0%
LOAD_FAST172,876,00028,220-100.0%
LOAD_ATTR6,402,2401,240-100.0%
CALL_NON_PY_GENERAL16,013,2803,500-100.0%
LOAD_CONST32,008,4008,540-100.0%
CALL_KW_NON_PY6,400,0401,980-100.0%
LOAD_GLOBAL_MODULE6,404,5402,520-100.0%
LOAD_GLOBAL_BUILTIN6,401,4802,520-100.0%
CALL_METHOD_DESCRIPTOR_FAST6,403,8203,560-99.9%
LOAD_ATTR_METHOD_LAZY_DICT6,403,8203,560-99.9%
POP_TOP6,404,0006,340-99.9%
EXTENDED_ARG2,640700-73.5%
GET_ITER1,360460-66.2%
CALL_BUILTIN_CLASS1,440540-62.5%
CALL1,1201,1200.0%
LOAD_GLOBAL9209200.0%
PUSH_NULL5605600.0%
LOAD_ATTR_MODULE3003000.0%
LOAD_DEREF2402400.0%
RETURN_VALUE1601600.0%
CALL_FUNCTION_EX1601600.0%
LOAD_SPECIAL1601600.0%
SWAP1601600.0%
RESUME_CHECK1201200.0%
STORE_ATTR1001000.0%
NOP80800.0%
BUILD_LIST80800.0%
CALL_INTRINSIC_180800.0%
CALL_KW80800.0%
COPY80800.0%
COPY_FREE_VARS80800.0%
FOR_ITER80800.0%
LIST_EXTEND80800.0%
LOAD_FAST_CHECK80800.0%
CALL_METHOD_DESCRIPTOR_NOARGS60600.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS60600.0%
BINARY_SUBSCR40400.0%
TO_BOOL40400.0%
UNPACK_SEQUENCE40400.0%
RESUME40400.0%
ENTER_EXECUTOR4,740
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
48,026,900100.0%6,92090.1%-100.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
600.0%600.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure13,50099.9%68097.1%-95.0%
Success200.1%202.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
and int1,76013.0%8011.8%-95.5%
multiply different types1,76013.0%8011.8%-95.5%
multiply other2,74020.3%14020.6%-94.9%
add other7,24053.6%38055.9%-94.8%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6,399,980100.0%66094.3%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.0%202.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
12,805,300100.0%4,82080.3%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5600.0%5609.3%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
600.0%601.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success600100.0%600100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4050.0%4050.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6,400,000100.0%68089.5%-100.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,760100.0%80100.0%-95.5%
Success00.0%00.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
different types1,760100.0%80100.0%-95.5%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6,402,600100.0%1,02092.7%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.0%403.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6,400,24028.6%92014.7%-100.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
16,013,04071.4%5,02080.2%-100.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,76088.0%8025.0%-95.5%
Success24012.0%24075.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
overridden1,760100.0%80100.0%-95.5%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
12,806,020100.0%5,04084.6%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4600.0%4607.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success460100.0%460100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
8080.0%8080.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success00.0%00.0%
Failure20100.0%20100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
overridden20100.0%20100.0%0.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6,399,980100.0%66094.3%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.0%202.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6,399,980100.0%66094.3%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.0%202.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
60,846,84013.1%12,04011.8%-100.0%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
313,737,48067.6%66,18065.0%-100.0%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
89,640,40019.3%23,54023.1%-100.0%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
600.0%600.1%0.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
COMPARE_OP6,400,00010.5%6807.0%-100.0%
LOAD_ATTR6,400,24010.5%9209.4%-100.0%
BINARY_OP48,026,90079.0%6,92070.9%-100.0%
CALL5600.0%5605.7%0.0%
LOAD_GLOBAL4600.0%4604.7%0.0%
STORE_ATTR800.0%800.8%0.0%
CALL_KW400.0%400.4%0.0%
FOR_ITER400.0%400.4%0.0%
BINARY_SUBSCR200.0%200.2%0.0%
TO_BOOL200.0%200.2%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
CALL_METHOD_DESCRIPTOR_NOARGS60100.0%60100.0%0.0%
GET_ITER00.0%00.0%
NOP00.0%00.0%
POP_TOP00.0%00.0%
PUSH_NULL00.0%00.0%
RETURN_VALUE00.0%00.0%
BUILD_LIST00.0%00.0%
CALL_FUNCTION_EX00.0%00.0%
CALL_INTRINSIC_100.0%00.0%
COPY00.0%00.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault00.0%00.0%
Calls to Python functions inlined160100.0%160100.0%0.0%
Calls via PyEval_EvalFrame (total)00.0%00.0%
Calls via PyEval_EvalFrame (vector)00.0%00.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)00.0%00.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)160100.0%160100.0%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed160100.0%160100.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Interpreter immortal increfs46,669,7006.6%27,467,2204.0%-41.1%
Allocations over 4 kbytes1600.0%1800.0%12.5%
Method cache dunder misses98-11.1%
Method cache collisions248225-9.3%
Interpreter mortal increfs199,834,76028.3%206,217,52029.8%3.2%
Interpreter mortal decrefs282,750,14033.5%289,132,92034.0%2.3%
Method cache misses3243301.9%
Method cache dunder hits2312320.4%
Interpreter immortal decrefs63,012,9607.5%63,017,7407.4%0.0%
Frees110,034,448110,036,2220.0%
Mortal decrefs424,133,83650.2%424,139,52649.8%0.0%
Mortal increfs374,605,40453.1%374,609,23654.1%0.0%
Immortal increfs84,402,98212.0%84,403,32012.2%0.0%
Immortal decrefs75,304,8308.9%75,305,0908.8%0.0%
Allocations from freelist28,814,36020.8%28,814,44020.8%0.0%
Frees to freelist28,814,36028,814,4400.0%
Allocations110,034,64079.2%110,034,72079.2%0.0%
Method cache hits19,201,97619,201,970-0.0%
Allocations to 512 bytes110,034,48079.2%110,034,48079.2%0.0%
Allocations to 4 kbytes00.0%600.0%60 / 0 !!
Inline values2002000.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-thrift-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-thrift-vs-base.md new file mode 100644 index 00000000..c9a72e44 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-thrift-vs-base.md @@ -0,0 +1,2698 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD6,164,5802,620-100.0%
FOR_ITER_RANGE2,089,0001,020-100.0%
CALL_BUILTIN_CLASS20,520420-98.0%
BINARY_OP_SUBTRACT_FLOAT20,4601,240-93.9%
BINARY_OP_ADD_FLOAT20,4601,300-93.6%
CALL_LIST_APPEND20,5801,420-93.1%
LIST_APPEND4020-50.0%
STORE_FAST_LOAD_FAST4020-50.0%
FOR_ITER_TUPLE8,192,0604,097,920-50.0%
LOAD_FAST_LOAD_FAST59,413,56043,023,220-27.6%
TO_BOOL_STR10080-20.0%
STORE_ATTR_INSTANCE_VALUE86,016,28069,645,160-19.0%
RESUME_CHECK57,345,16047,112,280-17.8%
CALL_ALLOC_AND_ENTER_INIT14,336,00012,288,680-14.3%
LOAD_GLOBAL_MODULE43,050,66038,916,680-9.6%
PUSH_NULL22,569,54020,482,900-9.2%
CALL_PY_EXACT_ARGS22,528,52020,481,200-9.1%
LOAD_ATTR_MODULE28,713,84026,627,200-7.3%
STORE_FAST36,947,36034,821,440-5.8%
SWAP480460-4.2%
LOAD_FAST182,338,640178,188,240-2.3%
GET_ITER4,116,6404,096,540-0.5%
CALL_NON_PY_GENERAL8,233,5608,194,240-0.5%
LOAD_ATTR_METHOD_NO_DICT12,308,88012,289,700-0.2%
LOAD_GLOBAL_BUILTIN18,452,94018,432,840-0.1%
LOAD_CONST57,366,14057,346,040-0.0%
POP_TOP24,577,10024,579,7000.0%
CALL_METHOD_DESCRIPTOR_O2,048,1002,048,080-0.0%
POP_JUMP_IF_TRUE4,096,4204,096,400-0.0%
CALL_METHOD_DESCRIPTOR_FAST12,288,18012,288,160-0.0%
RETURN_CONST38,912,72038,912,7200.0%
LOAD_ATTR_INSTANCE_VALUE32,768,90032,768,9000.0%
RETURN_VALUE32,768,82032,768,8200.0%
INTERPRETER_EXIT20,480,30020,480,3000.0%
POP_JUMP_IF_FALSE14,336,64014,336,6400.0%
EXIT_INIT_CHECK14,335,98014,335,9800.0%
POP_JUMP_IF_NONE12,288,14012,288,1400.0%
LOAD_ATTR_METHOD_WITH_VALUES12,288,02012,288,0200.0%
TO_BOOL_BOOL10,240,34010,240,3400.0%
LOAD_ATTR_CLASS8,191,9408,191,9400.0%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES8,191,9208,191,9200.0%
BUILD_LIST6,144,3006,144,3000.0%
BUILD_MAP6,144,0806,144,0800.0%
CALL_ISINSTANCE6,144,0006,144,0000.0%
NOP4,096,6604,096,6600.0%
CALL_FUNCTION_EX4,096,2404,096,2400.0%
CALL_BUILTIN_FAST4,096,2004,096,2000.0%
COPY_FREE_VARS4,096,1404,096,1400.0%
LOAD_ATTR_SLOT4,096,1004,096,1000.0%
DICT_MERGE4,096,0804,096,0800.0%
COMPARE_OP_STR4,096,0204,096,0200.0%
TO_BOOL_INT4,096,0204,096,0200.0%
IMPORT_FROM4,096,0004,096,0000.0%
IMPORT_NAME4,096,0004,096,0000.0%
CALL_KW_NON_PY4,096,0004,096,0000.0%
LOAD_SUPER_ATTR_ATTR4,095,9804,095,9800.0%
LOAD_ATTR_METHOD_LAZY_DICT4,095,9604,095,9600.0%
JUMP_FORWARD2,048,0202,048,0200.0%
CALL_METHOD_DESCRIPTOR_NOARGS2,047,9802,047,9800.0%
LOAD_ATTR2,2002,2000.0%
CALL1,4801,4800.0%
STORE_ATTR1,1401,1400.0%
LOAD_GLOBAL1,1201,1200.0%
POP_JUMP_IF_NOT_NONE5805800.0%
RESUME4004000.0%
LOAD_SPECIAL3203200.0%
LOAD_DEREF3003000.0%
CALL_PY_GENERAL2402400.0%
COPY1801800.0%
COMPARE_OP_INT1401400.0%
LOAD_FAST_CHECK1201200.0%
FOR_ITER_LIST1201200.0%
TO_BOOL1001000.0%
BINARY_OP1001000.0%
BUILD_TUPLE1001000.0%
STORE_FAST_STORE_FAST1001000.0%
BINARY_SUBSCR_DICT1001000.0%
CALL_INTRINSIC_180800.0%
FOR_ITER80800.0%
IS_OP80800.0%
LIST_EXTEND80800.0%
BINARY_SUBSCR_TUPLE_INT80800.0%
CONTAINS_OP_DICT80800.0%
STORE_SUBSCR_DICT80800.0%
UNPACK_SEQUENCE_TWO_TUPLE80800.0%
TO_BOOL_NONE60600.0%
COMPARE_OP60600.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS60600.0%
CALL_LEN60600.0%
LOAD_ATTR_PROPERTY60600.0%
CHECK_EXC_MATCH40400.0%
FORMAT_SIMPLE40400.0%
POP_EXCEPT40400.0%
PUSH_EXC_INFO40400.0%
CALL_KW40400.0%
JUMP_BACKWARD_NO_INTERRUPT40400.0%
LOAD_SUPER_ATTR40400.0%
UNPACK_SEQUENCE40400.0%
BINARY_OP_ADD_UNICODE40400.0%
CALL_BOUND_METHOD_EXACT_ARGS40400.0%
CALL_KW_PY40400.0%
CALL_TUPLE_140400.0%
CONTAINS_OP_SET40400.0%
LOAD_SUPER_ATTR_METHOD40400.0%
TO_BOOL_LIST40400.0%
DELETE_SUBSCR20200.0%
MAKE_FUNCTION20200.0%
BUILD_STRING20200.0%
LOAD_FAST_AND_CLEAR20200.0%
SET_FUNCTION_ATTRIBUTE20200.0%
CALL_BUILTIN_O20200.0%
COMPARE_OP_FLOAT20200.0%
STORE_ATTR_SLOT20200.0%
ENTER_EXECUTOR12,283,780
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
40,90099.6%2,52094.0%-93.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
600.1%602.2%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
600.1%602.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
180100.0%180100.0%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
63,530,220100.0%59,396,280100.0%-6.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
7400.0%7400.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1200.0%1200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success760100.0%760100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2050.0%2050.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
600.0%600.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
4,096,180100.0%4,096,180100.0%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
120100.0%120100.0%0.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
10,281,180100.0%4,099,060100.0%-60.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.0%400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
110,655,340100.0%108,549,520100.0%-1.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,1800.0%1,1800.0%0.0%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
200.0%200.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
2800.0%2800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,020100.0%1,020100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
61,499,480100.0%57,345,400100.0%-6.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5600.0%5600.0%0.0%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
400.0%400.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
4,1200.0%4,1200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success620100.0%620100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_SUPER_ATTR + +
+ specialization stats for LOAD_SUPER_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.0%200.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
4,096,020100.0%4,096,020100.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
86,016,300100.0%69,645,180100.0%-19.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6000.0%6000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success540100.0%540100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
80100.0%80100.0%0.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
14,336,520100.0%14,336,500100.0%-0.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
600.0%600.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
400.0%400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2016.7%2016.7%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
8066.7%8066.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
424,227,56042.7%380,969,76040.9%-10.2%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
569,629,30057.3%550,960,14059.1%-3.3%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
4,6200.0%4,7400.0%2.6%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
6,4000.0%6,4000.0%0.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
LOAD_ATTR1,18035.1%1,18035.1%0.0%
CALL74022.0%74022.0%0.0%
STORE_ATTR60017.9%60017.9%0.0%
LOAD_GLOBAL56016.7%56016.7%0.0%
TO_BOOL601.8%601.8%0.0%
BINARY_OP601.8%601.8%0.0%
COMPARE_OP601.8%601.8%0.0%
FOR_ITER401.2%401.2%0.0%
CALL_KW200.6%200.6%0.0%
LOAD_SUPER_ATTR200.6%200.6%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
LOAD_GLOBAL_BUILTIN3,14068.0%3,14064.6%0.0%
LOAD_GLOBAL_MODULE98021.2%98020.2%0.0%
LOAD_ATTR_MODULE2405.2%2404.9%0.0%
CALL_PY_EXACT_ARGS801.7%801.6%0.0%
BINARY_OP_ADD_FLOAT601.3%601.2%0.0%
LOAD_ATTR_METHOD_WITH_VALUES400.9%400.8%0.0%
TO_BOOL_NONE400.9%400.8%0.0%
CALL_ALLOC_AND_ENTER_INIT200.4%200.4%0.0%
CALL_METHOD_DESCRIPTOR_O200.4%
CACHE00.0%
RESUME1202.5%
RESUME_CHECK1202.5%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault20,480,30035.7%20,480,30035.7%0.0%
Calls to Python functions inlined36,865,26064.3%36,865,26064.3%0.0%
Calls via PyEval_EvalFrame (total)20,480,30035.7%20,480,30035.7%0.0%
Calls via PyEval_EvalFrame (vector)20,480,30035.7%20,480,30035.7%0.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)20,480,30035.7%20,480,30035.7%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)1600.0%1600.0%0.0%
Calls via PyEval_EvalFrame (api)6,144,06010.7%6,144,06010.7%0.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created400.0%400.0%0.0%
Frames pushed71,681,540125.0%71,681,540125.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache misses103,492410,615296.8%
Method cache dunder misses102,772331-99.7%
Method cache collisions205,947410,61299.4%
Interpreter immortal decrefs202,817,58014.4%215,101,30014.9%6.1%
Interpreter mortal increfs573,655,56043.3%590,028,62044.0%2.9%
Interpreter mortal decrefs592,114,98041.9%604,393,98041.9%2.1%
Mortal decrefs291,009,14320.6%295,416,60620.5%1.5%
Method cache hits42,908,00842,600,885-0.7%
Method cache dunder hits18,330,42818,432,8690.6%
Mortal increfs221,298,74916.7%221,609,99416.5%0.1%
Immortal increfs303,497,22022.9%303,599,74022.6%0.0%
Immortal decrefs326,028,28723.1%326,130,69022.6%0.0%
Interpreter immortal increfs225,324,26017.0%225,284,04016.8%-0.0%
Frees96,312,28696,314,2370.0%
Allocations from freelist90,160,42048.3%90,160,60048.3%0.0%
Frees to freelist90,162,38090,162,5600.0%
Allocations96,314,46051.7%96,314,58051.7%0.0%
Allocations to 512 bytes96,314,46051.7%96,314,50051.7%0.0%
Allocations to 4 kbytes00.0%800.0%80 / 0 !!
Allocations over 4 kbytes00.0%00.0%
Inline values24,576,26024,576,2600.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-tomli_loads-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-tomli_loads-vs-base.md new file mode 100644 index 00000000..72fd3814 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-tomli_loads-vs-base.md @@ -0,0 +1,2894 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD1,381,622,6004,320-100.0%
BINARY_OP_INPLACE_ADD_UNICODE4,214,8804,660-99.9%
BINARY_OP_ADD_UNICODE20,173,340510,160-97.5%
CALL_METHOD_DESCRIPTOR_O2,193,18083,660-96.2%
FOR_ITER_LIST34020-94.1%
LIST_APPEND32020-93.8%
STORE_FAST_LOAD_FAST32020-93.8%
BUILD_MAP6,457,760461,980-92.8%
COPY25,490,6602,165,100-91.5%
COMPARE_OP_STR2,009,276,420223,013,580-88.9%
BINARY_OP_ADD_INT1,326,124,640183,191,620-86.2%
CONTAINS_OP_SET1,523,712,580222,399,960-85.4%
POP_JUMP_IF_FALSE4,006,971,060710,800,920-82.3%
NOP2,414,756,080437,707,820-81.9%
LOAD_CONST3,793,889,960727,675,660-80.8%
BINARY_SUBSCR_STR_INT1,580,972,380326,595,020-79.3%
LOAD_FAST_LOAD_FAST3,511,481,2001,013,670,200-71.1%
LOAD_FAST5,174,019,9601,519,135,500-70.6%
FOR_ITER_TUPLE190,352,30058,320,120-69.4%
STORE_FAST3,350,189,7401,087,848,280-67.5%
BINARY_SUBSCR_DICT321,215,240118,121,380-63.2%
CONTAINS_OP_DICT188,519,04083,770,580-55.6%
CALL_ISINSTANCE177,147,46079,626,620-55.1%
POP_JUMP_IF_TRUE78,257,84035,268,480-54.9%
TO_BOOL_BOOL376,714,560183,226,920-51.4%
LOAD_GLOBAL_BUILTIN437,016,220237,595,500-45.6%
BINARY_SLICE54,889,76031,015,440-43.5%
POP_TOP86,750,30060,948,000-29.7%
PUSH_NULL8,807,6806,702,080-23.9%
BINARY_SUBSCR144,728,980113,924,980-21.3%
CALL_BUILTIN_FAST_WITH_KEYWORDS140120-14.3%
CALL_BUILTIN_CLASS32,092,06027,713,020-13.6%
STORE_SUBSCR_DICT29,324,62025,518,360-13.0%
BUILD_TUPLE193,341,700169,821,000-12.2%
LOAD_GLOBAL_MODULE636,805,480570,225,760-10.5%
CALL_PY_EXACT_ARGS388,927,420356,689,880-8.3%
RESUME_CHECK440,548,240406,205,140-7.8%
CALL_PY_GENERAL29,254,12027,148,540-7.2%
LOAD_ATTR_METHOD_NO_DICT36,110,86033,787,740-6.4%
LOAD_ATTR_MODULE560540-3.6%
UNPACK_SEQUENCE_TWO_TUPLE86,901,16084,796,540-2.4%
STORE_FAST_STORE_FAST114,407,140112,302,520-1.8%
JUMP_FORWARD27,801,84027,444,240-1.3%
RETURN_VALUE407,422,660403,719,420-0.9%
CALL_METHOD_DESCRIPTOR_FAST27,443,32027,229,720-0.8%
TO_BOOL_STR2,233,5402,233,220-0.0%
GET_ITER110,778,920110,778,9200.0%
LOAD_DEREF101,972,640101,972,6400.0%
LOAD_ATTR66,873,30066,873,3000.0%
LOAD_ATTR_INSTANCE_VALUE61,984,98061,984,9800.0%
LOAD_ATTR_METHOD_WITH_VALUES60,446,62060,446,6200.0%
MAKE_CELL50,627,12050,627,1200.0%
RETURN_CONST33,126,42033,126,4200.0%
LOAD_ATTR_CLASS30,876,96030,876,9600.0%
BINARY_OP29,034,68029,034,6800.0%
TO_BOOL28,693,12028,693,1200.0%
CALL_LEN25,314,48025,314,4800.0%
FOR_ITER_RANGE25,313,64025,313,6400.0%
COPY_FREE_VARS25,313,60025,313,6000.0%
UNPACK_SEQUENCE_TUPLE25,313,54025,313,5400.0%
MAKE_FUNCTION25,313,52025,313,5200.0%
RETURN_GENERATOR25,313,52025,313,5200.0%
SET_FUNCTION_ATTRIBUTE25,313,52025,313,5200.0%
STORE_DEREF25,313,52025,313,5200.0%
END_FOR25,313,50025,313,5000.0%
FOR_ITER_GEN25,313,50025,313,5000.0%
CALL_KW_PY22,365,50022,365,5000.0%
CALL_NON_PY_GENERAL11,165,86011,165,8600.0%
TO_BOOL_NONE4,466,2204,466,2200.0%
TO_BOOL_ALWAYS_TRUE2,233,1002,233,1000.0%
FOR_ITER1,834,0401,834,0400.0%
CALL_METHOD_DESCRIPTOR_NOARGS1,833,1601,833,1600.0%
BUILD_LIST480,180480,1800.0%
COMPARE_OP_INT364,360364,3600.0%
CALL_LIST_APPEND174,920174,9200.0%
LOAD_GLOBAL4,0804,0800.0%
CALL4,0604,0600.0%
SWAP1,3801,3800.0%
COMPARE_OP9609600.0%
CALL_BUILTIN_O9409400.0%
RESUME7207200.0%
CONTAINS_OP7007000.0%
INTERPRETER_EXIT5205200.0%
UNPACK_SEQUENCE4804800.0%
STORE_ATTR_INSTANCE_VALUE4204200.0%
CHECK_EXC_MATCH2002000.0%
POP_EXCEPT2002000.0%
PUSH_EXC_INFO2002000.0%
STORE_SUBSCR2002000.0%
CALL_KW2002000.0%
STORE_ATTR2002000.0%
CALL_BUILTIN_FAST2002000.0%
CALL_FUNCTION_EX1801800.0%
LOAD_ATTR_SLOT1601600.0%
LOAD_SPECIAL1601600.0%
EXIT_INIT_CHECK1201200.0%
CALL_ALLOC_AND_ENTER_INIT1201200.0%
CALL_INTRINSIC_180800.0%
IS_OP80800.0%
LIST_EXTEND80800.0%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
CALL_STR_160600.0%
STORE_ATTR_SLOT60600.0%
LOAD_FAST_AND_CLEAR20200.0%
CALL_BOUND_METHOD_EXACT_ARGS20200.0%
LOAD_ATTR_PROPERTY20200.0%
ENTER_EXECUTOR185,952,000
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,350,512,92097.9%183,706,50086.4%-86.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
29,026,4002.1%29,026,40013.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success6007.2%6007.2%0.0%
Failure7,68092.8%7,68092.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
add other7,680100.0%7,680100.0%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
54,889,760100.0%31,015,440100.0%-43.5%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,902,181,92092.9%444,710,70079.6%-76.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
144,690,8807.1%113,894,50020.4%-21.3%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
5,7000.0%5,7000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure37,62098.5%30,00098.1%-20.3%
Success5801.5%5801.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other7001.9%1000.3%-85.7%
out of range22,10058.7%15,08050.3%-31.8%
tuple slice14,82039.4%14,82049.4%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
655,127,520100.0%518,666,960100.0%-20.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,9800.0%1,9800.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
600.0%600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success2,180100.0%2,180100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
10050.0%10050.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,009,640,780100.0%223,377,940100.0%-88.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4600.0%4600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success500100.0%500100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,712,231,620100.0%306,170,540100.0%-82.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3800.0%3800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success30093.8%30093.8%0.0%
Failure206.2%206.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
str20100.0%20100.0%0.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
240,979,78099.2%108,947,28098.3%-54.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,833,2600.8%1,833,2601.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success14017.9%14017.9%0.0%
Failure64082.1%64082.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
set640100.0%640100.0%0.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
189,420,14073.9%187,097,00073.7%-1.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
66,852,62026.1%66,852,62026.3%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
200.0%200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,4206.9%1,4206.9%0.0%
Failure19,26093.1%19,26093.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
overriding descriptor16,98088.2%16,98088.2%0.0%
method2,22011.5%2,22011.5%0.0%
not managed dict200.1%200.1%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,073,821,660100.0%807,821,220100.0%-24.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,0200.0%2,0200.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
400.0%400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success2,060100.0%2,060100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
8011.8%8011.8%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
48070.6%48070.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success120100.0%120100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
29,324,620100.0%25,518,360100.0%-13.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1000.0%1000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success100100.0%100100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
383,414,32093.0%189,926,36086.9%-50.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
28,685,2407.0%28,685,24013.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success6808.6%6808.6%0.0%
Failure7,20091.4%7,20091.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple7,200100.0%7,200100.0%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
112,214,700100.0%110,110,080100.0%-1.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2200.0%2200.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success260100.0%260100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
25,030,539,22070.5%6,950,497,96064.4%-72.2%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
10,164,436,72028.6%3,575,169,26033.1%-64.8%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
6,3600.0%8,1000.0%27.4%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
326,064,7600.9%271,386,4402.5%-16.8%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
BINARY_SLICE54,889,76016.8%31,015,44011.4%-43.5%
BINARY_SUBSCR144,690,88044.4%113,894,50042.0%-21.3%
LOAD_ATTR66,852,62020.5%66,852,62024.6%0.0%
BINARY_OP29,026,4008.9%29,026,40010.7%0.0%
TO_BOOL28,685,2408.8%28,685,24010.6%0.0%
FOR_ITER1,833,2600.6%1,833,2600.7%0.0%
LOAD_GLOBAL2,0200.0%2,0200.0%0.0%
CALL1,9800.0%1,9800.0%0.0%
COMPARE_OP4600.0%4600.0%0.0%
CONTAINS_OP3800.0%3800.0%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
RESUME5407.8%2,28022.0%322.2%
RESUME_CHECK5407.8%2,28022.0%322.2%
BINARY_SUBSCR_STR_INT5,70082.6%5,70054.9%0.0%
CALL_METHOD_DESCRIPTOR_NOARGS600.9%600.6%0.0%
LOAD_GLOBAL_BUILTIN400.6%400.4%0.0%
LOAD_ATTR_SLOT200.3%200.2%0.0%
CACHE00.0%00.0%
BINARY_OP_INPLACE_ADD_UNICODE00.0%00.0%
CHECK_EXC_MATCH00.0%00.0%
END_FOR00.0%00.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault5200.0%5200.0%0.0%
Calls to Python functions inlined465,861,960100.0%465,861,960100.0%0.0%
Calls via PyEval_EvalFrame (total)5200.0%5200.0%0.0%
Calls via PyEval_EvalFrame (vector)5000.0%5000.0%0.0%
Calls via PyEval_EvalFrame (generator)200.0%200.0%0.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)5000.0%5000.0%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)800.0%800.0%0.0%
Calls via PyEval_EvalFrame (function ex)1800.0%1800.0%0.0%
Calls via PyEval_EvalFrame (api)1400.0%1400.0%0.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created2000.0%2000.0%0.0%
Frames pushed440,549,08094.6%440,549,08094.6%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Interpreter immortal increfs7,375,643,58034.0%4,211,739,60022.1%-42.9%
Mortal decrefs1,075,492,1124.5%1,131,274,1494.6%5.2%
Method cache dunder misses1932035.2%
Interpreter mortal increfs10,962,803,36050.5%11,437,774,86060.1%4.3%
Method cache collisions738709-3.9%
Interpreter mortal decrefs12,917,180,16054.6%13,336,395,78054.8%3.2%
Method cache misses8408592.3%
Interpreter immortal decrefs8,889,049,46037.5%9,075,001,72037.3%2.1%
Allocations to 4 kbytes410,8200.0%411,9800.0%0.3%
Allocations from freelist291,522,32015.2%291,538,50015.2%0.0%
Frees to freelist291,524,240291,540,4200.0%
Method cache dunder hits96,916,36796,915,757-0.0%
Mortal increfs1,128,771,0375.2%1,128,778,1175.9%0.0%
Frees1,636,419,0151,636,422,7320.0%
Immortal decrefs797,052,1943.4%797,053,9553.3%0.0%
Immortal increfs2,246,393,76910.3%2,246,396,88711.8%0.0%
Allocations1,629,717,34084.8%1,629,718,70084.8%0.0%
Method cache hits66,876,62066,876,601-0.0%
Allocations to 512 bytes1,629,305,32084.8%1,629,305,52084.8%0.0%
Allocations over 4 kbytes1,2000.0%1,2000.0%0.0%
Inline values2402400.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
11,2003,84041,150,7201,2003,84041,197,980
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-tornado_http-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-tornado_http-vs-base.md new file mode 100644 index 00000000..861df07d --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-tornado_http-vs-base.md @@ -0,0 +1,3993 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD2,135,78016,320-99.2%
BINARY_SUBSCR_STR_INT108,800960-99.1%
FOR_ITER_RANGE490,88030,417-93.8%
UNPACK_SEQUENCE_LIST119,96012,300-89.7%
FOR_ITER_GEN275,94060,540-78.1%
FOR_ITER_LIST1,008,117305,932-69.7%
TO_BOOL_LIST61,87220,635-66.6%
STORE_SUBSCR242,96089,840-63.0%
TO_BOOL_STR290,940116,380-60.0%
LOAD_FAST_CHECK96,80038,953-59.8%
CALL_INTRINSIC_1663,676287,884-56.6%
FOR_ITER465,034204,214-56.1%
LIST_EXTEND675,696299,904-55.6%
CALL_METHOD_DESCRIPTOR_NOARGS2,076,263933,560-55.0%
FOR_ITER_TUPLE123,34060,700-50.8%
BINARY_SUBSCR_LIST_INT110,84257,806-47.8%
LOAD_ATTR_SLOT4,316,2682,617,505-39.4%
STORE_FAST_STORE_FAST1,215,758742,712-38.9%
BINARY_SUBSCR558,620344,300-38.4%
CONTAINS_OP655,180407,030-37.9%
UNPACK_SEQUENCE_TWO_TUPLE962,518613,412-36.3%
CALL_BUILTIN_O79,94653,758-32.8%
TO_BOOL1,348,428910,611-32.5%
POP_JUMP_IF_TRUE4,694,0843,170,434-32.5%
BUILD_LIST1,235,803849,844-31.2%
LOAD_ATTR_METHOD_NO_DICT5,411,9103,742,621-30.8%
TO_BOOL_INT955,984668,737-30.0%
NOP3,903,7822,760,697-29.3%
EXTENDED_ARG216,764155,855-28.1%
CALL_METHOD_DESCRIPTOR_FAST1,326,028967,314-27.1%
CALL_LEN1,162,506894,956-23.0%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS724,090558,716-22.8%
BINARY_SUBSCR_TUPLE_INT205,360159,462-22.4%
BINARY_OP1,183,598921,294-22.2%
CALL_KW_PY324,460252,800-22.1%
TO_BOOL_BOOL9,990,1417,793,405-22.0%
STORE_FAST12,624,7739,932,920-21.3%
CALL_LIST_APPEND267,024210,477-21.2%
LOAD_ATTR_METHOD_WITH_VALUES11,483,2519,070,335-21.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS349,828279,764-20.0%
CALL_NON_PY_GENERAL4,969,4464,048,448-18.5%
STORE_ATTR_INSTANCE_VALUE8,162,5506,681,713-18.1%
BINARY_OP_ADD_INT1,126,584934,223-17.1%
POP_JUMP_IF_FALSE15,281,12712,725,016-16.7%
LOAD_ATTR_PROPERTY120,700100,600-16.7%
LOAD_ATTR3,355,5922,797,701-16.6%
LOAD_FAST80,530,60367,229,516-16.5%
STORE_FAST_LOAD_FAST218,700182,860-16.4%
COMPARE_OP_INT3,683,1923,083,814-16.3%
LOAD_ATTR_INSTANCE_VALUE28,214,53023,841,863-15.5%
MAKE_CELL428,404362,021-15.5%
GET_ITER762,695647,321-15.1%
CALL_PY_EXACT_ARGS12,100,96710,275,016-15.1%
BINARY_SUBSCR_DICT902,874767,211-15.0%
LOAD_CONST17,069,58414,525,703-14.9%
LOAD_FAST_LOAD_FAST10,391,5018,854,858-14.8%
JUMP_FORWARD806,373692,097-14.2%
RESUME_CHECK20,389,53417,534,586-14.0%
BUILD_TUPLE1,418,4001,222,846-13.8%
BINARY_OP_SUBTRACT_INT891,996769,693-13.7%
CALL_METHOD_DESCRIPTOR_O971,588846,039-12.9%
PUSH_NULL3,575,3353,118,708-12.8%
POP_JUMP_IF_NONE5,708,3325,034,134-11.8%
COPY_FREE_VARS774,750684,704-11.6%
COPY2,797,3302,474,199-11.6%
CALL_ISINSTANCE2,239,3471,990,431-11.1%
POP_TOP10,314,8359,174,370-11.1%
LOAD_GLOBAL_BUILTIN7,582,5196,754,562-10.9%
BINARY_SUBSCR_GETITEM420,620376,051-10.6%
LIST_APPEND14,06012,600-10.4%
LOAD_GLOBAL_MODULE11,096,0879,977,343-10.1%
CALL_PY_GENERAL1,185,9481,067,749-10.0%
BINARY_SLICE409,020370,988-9.3%
UNPACK_SEQUENCE_TUPLE96,36088,200-8.5%
LOAD_DEREF2,112,6401,943,951-8.0%
SWAP2,135,1161,993,789-6.6%
POP_JUMP_IF_NOT_NONE1,731,0061,624,416-6.2%
TO_BOOL_NONE1,428,5201,341,040-6.1%
CALL_KW_NON_PY155,104146,920-5.3%
LOAD_ATTR_MODULE3,189,4293,041,420-4.6%
CALL_BUILTIN_CLASS270,144259,437-4.0%
RETURN_CONST7,961,9887,660,006-3.8%
CALL_ALLOC_AND_ENTER_INIT349,040337,270-3.4%
RETURN_VALUE11,883,25211,496,868-3.3%
COMPARE_OP_FLOAT361,915351,268-2.9%
CALL_BUILTIN_FAST1,763,0801,714,310-2.8%
DICT_MERGE479,580469,160-2.2%
STORE_ATTR_SLOT3,640,7863,587,809-1.5%
COMPARE_OP_STR278,200274,374-1.4%
BUILD_MAP804,820794,320-1.3%
LOAD_ATTR_CLASS769,420759,648-1.3%
LOAD_SPECIAL504,888500,232-0.9%
LOAD_FAST_AND_CLEAR73,44072,820-0.8%
CONTAINS_OP_SET169,700169,280-0.2%
BINARY_OP_MULTIPLY_FLOAT12,73712,7630.2%
CALL_BOUND_METHOD_EXACT_ARGS183,777184,0960.2%
SET_FUNCTION_ATTRIBUTE216,160216,5040.2%
BINARY_OP_ADD_UNICODE228,920228,620-0.1%
BINARY_OP_SUBTRACT_FLOAT85,51385,6080.1%
IS_OP676,360675,720-0.1%
MAKE_FUNCTION420,480420,8240.1%
COMPARE_OP178,331178,4450.1%
INTERPRETER_EXIT5,285,6075,282,327-0.1%
DELETE_FAST238,664238,575-0.0%
JUMP_BACKWARD_NO_INTERRUPT190,624190,555-0.0%
STORE_DEREF121,780121,740-0.0%
BINARY_OP_ADD_FLOAT121,550121,512-0.0%
CHECK_EXC_MATCH448,626448,7140.0%
STORE_ATTR540,380540,300-0.0%
RETURN_GENERATOR348,340348,290-0.0%
CALL_FUNCTION_EX1,083,6401,083,7800.0%
BUILD_SLICE84,00083,990-0.0%
POP_EXCEPT458,732458,7670.0%
PUSH_EXC_INFO458,892458,9270.0%
DELETE_SUBSCR132,500132,490-0.0%
END_SEND468,000467,980-0.0%
GET_AWAITABLE480,000479,980-0.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK326,979326,9910.0%
SEND_GEN299,800299,790-0.0%
EXIT_INIT_CHECK349,040349,030-0.0%
SEND350,220350,210-0.0%
YIELD_VALUE576,300576,3000.0%
STORE_SUBSCR_DICT565,280565,2800.0%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES383,840383,8400.0%
CALL_TYPE_1204,420204,4200.0%
LOAD_SUPER_ATTR_METHOD191,580191,5800.0%
LOAD_ATTR_WITH_HINT143,960143,9600.0%
LOAD_SUPER_ATTR_ATTR119,980119,9800.0%
CONTAINS_OP_DICT108,960108,9600.0%
RERAISE72,02072,0200.0%
FORMAT_SIMPLE60,32060,3200.0%
CONVERT_VALUE60,32060,3200.0%
UNARY_INVERT60,18060,1800.0%
END_FOR59,98059,9800.0%
CALL55,06055,0600.0%
TO_BOOL_ALWAYS_TRUE48,30048,3000.0%
CALL_BOUND_METHOD_GENERAL35,26035,2600.0%
LOAD_GLOBAL28,78028,7800.0%
BUILD_STRING24,16024,1600.0%
RAISE_VARARGS24,12024,1200.0%
LOAD_ATTR_METHOD_LAZY_DICT24,06024,0600.0%
UNPACK_SEQUENCE14,04014,0400.0%
UNARY_NOT12,14012,1400.0%
BINARY_OP_MULTIPLY_INT12,08012,0800.0%
BUILD_SET12,02012,0200.0%
RESUME9,6009,6000.0%
STORE_NAME6,2006,2000.0%
CALL_KW1,5601,5600.0%
IMPORT_FROM1,3201,3200.0%
IMPORT_NAME1,3001,3000.0%
LOAD_NAME1,2201,2200.0%
LOAD_SUPER_ATTR8208200.0%
CALL_STR_14604600.0%
LOAD_BUILD_CLASS3003000.0%
LOAD_LOCALS2802800.0%
STORE_SUBSCR_LIST_INT2402400.0%
CALL_TUPLE_11601600.0%
BINARY_OP_INPLACE_ADD_UNICODE1001000.0%
STORE_GLOBAL60600.0%
SET_UPDATE20200.0%
ENTER_EXECUTOR1,856,863
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,174,83932.1%912,98429.6%-22.3%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,479,48067.7%2,164,59970.1%-12.7%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure7,79989.0%7,35088.4%-5.8%
Success96011.0%96011.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
true divide other1401.8%1001.4%-28.6%
add other1,26016.2%1,12015.2%-11.1%
and int3,56045.6%3,34945.6%-5.9%
or1,26016.2%1,20516.4%-4.4%
multiply different types801.0%781.1%-2.5%
add different types4395.6%4386.0%-0.2%
remainder88011.3%88012.0%0.0%
floor divide1802.3%1802.4%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
409,020100.0%370,988100.0%-9.3%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
554,50024.0%340,40020.0%-38.6%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,746,71675.7%1,359,71079.7%-22.2%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1,7800.1%1,7800.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure3,16076.3%2,94075.0%-7.0%
Success98023.7%98025.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
string slice2608.2%1003.4%-61.5%
buffer int2,46077.8%2,40081.6%-2.4%
list slice2207.0%2207.5%0.0%
other1605.1%1605.4%0.0%
tuple slice601.9%602.0%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
23,996,70798.7%19,639,19698.4%-18.2%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
260,4471.1%259,7551.3%-0.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
34,2400.1%34,2400.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success26,23799.4%26,19199.4%-0.2%
Failure1600.6%1600.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
out of versions160100.0%160100.0%0.0%
init not inline values8050.0%8050.0%0.0%
init not python2012.5%2012.5%0.0%
init not simple2012.5%2012.5%0.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
82052.6%82052.6%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
4,322,39096.0%3,708,51395.4%-14.2%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
9170.0%9430.0%2.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
174,5313.9%174,6514.5%0.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,88049.5%1,87449.4%-0.3%
Success1,92150.5%1,92050.6%-0.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
float long26013.8%25413.6%-2.3%
different types48025.5%48025.6%0.0%
bytes36019.1%36019.2%0.0%
other34018.1%34018.1%0.0%
tuple1809.6%1809.6%0.0%
big int1608.5%1608.5%0.0%
baseobject603.2%603.2%0.0%
bool402.1%402.1%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
650,38069.6%402,61058.8%-38.1%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
278,66029.8%278,24040.6%-0.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure4,40091.7%4,02091.0%-8.6%
Success4008.3%4009.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other1,46033.2%1,14028.4%-21.9%
str50011.4%44010.9%-12.0%
tuple2,38054.1%2,38059.2%0.0%
list601.4%601.5%0.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,898,15780.3%457,58969.1%-75.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
461,39419.5%200,89230.4%-56.5%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1200.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure2,64072.5%2,32269.9%-12.0%
Success1,00027.5%1,00030.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
bytes1606.1%1024.4%-36.2%
enumerate42015.9%28012.1%-33.3%
dict keys2409.1%2008.6%-16.7%
dict items1,36051.5%1,28055.1%-5.9%
other1806.8%1807.8%0.0%
set1606.1%1606.9%0.0%
ascii string1204.5%1205.2%0.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
53,869,92493.3%43,551,84793.0%-19.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3,291,0725.7%2,734,4565.8%-16.9%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
514,4230.9%500,9961.1%-2.6%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure19,92026.9%19,44526.8%-2.4%
Success54,15573.1%53,09473.2%-2.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
overriding descriptor7,52037.8%7,22537.2%-3.9%
method8,18041.1%8,00041.1%-2.2%
module attr not found1,2806.4%1,2806.6%0.0%
non overriding descriptor1,2206.1%1,2206.3%0.0%
class method obj4602.3%4602.4%0.0%
non object slot3801.9%3802.0%0.0%
overridden1800.9%1800.9%0.0%
builtin class method1600.8%1600.8%0.0%
metaclass attribute1600.8%1600.8%0.0%
mutable class400.2%400.2%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
18,675,86699.8%16,729,16599.8%-10.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
14,8000.1%14,8000.1%0.0%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
7400.0%7400.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
2,7400.0%2,7400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success14,000100.0%14,000100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_SUPER_ATTR + +
+ specialization stats for LOAD_SUPER_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4600.1%4600.1%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
311,56099.7%311,56099.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success360100.0%360100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### SEND + +
+ specialization stats for SEND family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
299,80046.1%299,79046.1%-0.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
348,20053.6%348,19053.6%-0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success2009.9%2009.9%0.0%
Failure1,82090.1%1,82090.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other1,820100.0%1,820100.0%0.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
11,111,32190.0%9,580,30188.6%-13.8%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
692,0155.6%689,2216.4%-0.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
525,6604.3%525,5804.9%-0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20,43073.9%20,37373.8%-0.3%
Failure7,22026.1%7,22026.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
not in dict4,00055.4%4,00055.4%0.0%
class attr simple1,66023.0%1,66023.0%0.0%
method4806.6%4806.6%0.0%
property4806.6%4806.6%0.0%
not in keys2603.6%2603.6%0.0%
not managed dict2403.3%2403.3%0.0%
overridden1001.4%1001.4%0.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
240,82029.8%88,00013.4%-63.5%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
565,52069.9%565,52086.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,76082.2%1,46079.3%-17.0%
Success38017.8%38020.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
py simple1,44081.8%1,14078.1%-20.8%
dict subclass no override32018.2%32021.9%0.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
41,9710.3%15,1110.1%-64.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,335,8109.5%898,7108.3%-32.7%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
12,685,56690.1%9,925,16691.5%-21.8%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure5,33839.8%4,64138.1%-13.1%
Success8,06060.2%7,53161.9%-6.6%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
bytes1,07820.2%62113.4%-42.4%
mapping56010.5%49910.8%-10.9%
bytearray4207.9%3808.2%-9.5%
sequence1,34025.1%1,22126.3%-8.9%
tuple3606.7%3407.3%-5.6%
float96018.0%96020.7%0.0%
dict62011.6%62013.4%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,178,83898.8%713,91298.1%-39.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
12,9601.1%12,9601.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success92085.2%92085.2%0.0%
Failure16014.8%16014.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
sequence160100.0%160100.0%0.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
9,387,6232.4%7,215,1932.2%-23.1%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
160,339,87741.2%132,230,21740.4%-17.5%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
217,684,98056.0%186,048,95456.9%-14.5%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
1,514,5270.4%1,470,6530.4%-2.9%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
FOR_ITER461,3945.0%200,8922.8%-56.5%
BINARY_SUBSCR554,5006.0%340,4004.8%-38.6%
CONTAINS_OP650,3807.0%402,6105.7%-38.1%
TO_BOOL1,335,81014.5%898,71012.7%-32.7%
BINARY_OP1,174,83912.7%912,98412.9%-22.3%
LOAD_ATTR3,291,07235.7%2,734,45638.7%-16.9%
BINARY_SLICE409,0204.4%370,9885.3%-9.3%
STORE_ATTR525,6605.7%525,5807.4%-0.0%
SEND348,2003.8%348,1904.9%-0.0%
STORE_SUBSCR240,8202.6%
COMPARE_OP174,6512.5%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
LOAD_ATTR_SLOT296,38119.6%281,94819.2%-4.9%
CALL_PY_EXACT_ARGS66,0614.4%65,4824.5%-0.9%
CALL_BOUND_METHOD_EXACT_ARGS26,2521.7%26,0781.8%-0.7%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK122,8768.1%123,5008.4%0.5%
STORE_ATTR_SLOT691,99545.7%689,20146.9%-0.4%
LOAD_ATTR_METHOD_WITH_VALUES40,4112.7%40,5492.8%0.3%
LOAD_ATTR_METHOD_NO_DICT37,4012.5%37,5072.6%0.3%
CALL_METHOD_DESCRIPTOR_NOARGS124,5918.2%124,6408.5%0.0%
CALL_METHOD_DESCRIPTOR_O36,8802.4%36,8802.5%0.0%
TO_BOOL_NONE25,7911.7%
LOAD_ATTR_INSTANCE_VALUE16,6521.1%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls via PyEval_EvalFrame (slot)1,097,1395.3%1,093,2905.3%-0.4%
Calls via PyEval_EvalFrame (function vectorcall)4,950,32723.9%4,947,04723.8%-0.1%
Calls via PyEval_EvalFrame (vector)4,950,72723.9%4,947,44723.8%-0.1%
Calls to PyEval_EvalDefault5,299,42725.5%5,296,14725.5%-0.1%
Calls via PyEval_EvalFrame (total)5,299,42725.5%5,296,14725.5%-0.1%
Frame objects created750,5423.6%750,6973.6%0.0%
Frames pushed20,171,87497.2%20,169,15997.2%-0.0%
Calls via PyEval_EvalFrame (method)890,2684.3%890,3634.3%0.0%
Calls to Python functions inlined15,448,04774.5%15,448,61274.5%0.0%
Calls via PyEval_EvalFrame (generator)348,7001.7%348,7001.7%0.0%
Calls via PyEval_EvalFrame (legacy)1000.0%1000.0%0.0%
Calls via PyEval_EvalFrame (build class)3000.0%3000.0%0.0%
Calls via PyEval_EvalFrame (function ex)132,5800.6%132,5800.6%0.0%
Calls via PyEval_EvalFrame (api)169,4800.8%169,4800.8%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache dunder misses23,36534,68648.5%
Method cache collisions261,674293,58312.2%
Method cache misses244,104264,5048.4%
Interpreter immortal increfs62,226,51118.2%59,277,86017.3%-4.7%
Interpreter immortal decrefs53,448,28415.0%55,446,30415.3%3.7%
Interpreter mortal increfs189,803,01355.5%193,725,92956.5%2.1%
Interpreter mortal decrefs202,516,20056.8%206,196,47856.9%1.8%
Allocations to 4 kbytes90,9350.3%92,2910.3%1.5%
Method cache dunder hits6,831,4676,800,211-0.5%
Mortal decrefs64,036,70918.0%64,280,51317.7%0.4%
Method cache hits7,988,6697,965,644-0.3%
Allocations over 4 kbytes231,7680.8%231,9570.8%0.1%
Immortal decrefs36,388,59910.2%36,412,14310.0%0.1%
Immortal increfs38,884,59911.4%38,908,49411.4%0.1%
Frees16,729,87016,737,2610.0%
Allocations16,475,24058.4%16,481,08758.4%0.0%
Allocations to 512 bytes16,152,53757.3%16,156,83957.3%0.0%
Mortal increfs50,772,63614.9%50,767,02514.8%-0.0%
Inline values1,083,3201,083,300-0.0%
Allocations from freelist11,730,07741.6%11,729,98341.6%-0.0%
Frees to freelist11,783,77311,783,680-0.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)12,0001.1%12,0001.1%0.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
12003,8404,395,3322013,8404,345,256
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-typing_runtime_protocols-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-typing_runtime_protocols-vs-base.md new file mode 100644 index 00000000..d939b6de --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-typing_runtime_protocols-vs-base.md @@ -0,0 +1,3531 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD61,138,95015,171-100.0%
FOR_ITER_LIST6,237,1004,960-99.9%
CALL_ISINSTANCE5,337,1308,782-99.8%
FOR_ITER_RANGE88,320840-99.0%
CONVERT_VALUE6,0601,060-82.5%
FOR_ITER_TUPLE75,801,03013,624,637-82.0%
STORE_SUBSCR_LIST_INT4,780920-80.8%
LIST_APPEND42,367,5608,860,014-79.1%
BUILD_STRING11,0803,060-72.4%
FORMAT_SIMPLE13,1003,980-69.6%
CALL_BUILTIN_FAST_WITH_KEYWORDS25,5808,180-68.0%
STORE_FAST_LOAD_FAST8,1002,820-65.2%
SWAP50,767,24017,973,428-64.6%
UNPACK_SEQUENCE_TWO_TUPLE12,5204,540-63.7%
LOAD_NAME66,56024,220-63.6%
BINARY_SUBSCR_LIST_INT1,720680-60.5%
STORE_FAST125,118,64059,035,239-52.8%
CALL_NON_PY_GENERAL81,239,30039,122,614-51.8%
STORE_FAST_STORE_FAST7,9603,840-51.8%
LOAD_ATTR_MODULE45,66023,324-48.9%
CALL_TYPE_116,836,5808,856,734-47.4%
LOAD_FAST_AND_CLEAR16,837,5008,858,054-47.4%
BUILD_LIST16,841,9208,862,474-47.4%
CALL_METHOD_DESCRIPTOR_NOARGS3,1801,760-44.7%
TO_BOOL_STR7,5404,220-44.0%
POP_TOP12,981,8807,665,038-41.0%
LOAD_ATTR_METHOD_NO_DICT34,06020,400-40.1%
CALL_METHOD_DESCRIPTOR_O12,0407,400-38.5%
STORE_SUBSCR_DICT8,1205,200-36.0%
BINARY_SLICE1,200780-35.0%
LOAD_GLOBAL_MODULE180,798,770117,631,890-34.9%
TO_BOOL_NONE1,7001,120-34.1%
LOAD_FAST154,387,480101,803,368-34.1%
GET_ITER26,186,32017,724,146-32.3%
STORE_NAME28,92020,020-30.8%
BINARY_SUBSCR_GETITEM960680-29.2%
BINARY_SUBSCR_STR_INT3,2402,340-27.8%
COMPARE_OP_FLOAT360260-27.8%
BINARY_OP_ADD_UNICODE8,7206,300-27.8%
CALL_BOUND_METHOD_EXACT_ARGS4,4403,240-27.0%
CONTAINS_OP_SET6,0604,440-26.7%
EXTENDED_ARG11,4408,480-25.9%
LOAD_GLOBAL_BUILTIN54,492,80040,540,906-25.6%
POP_JUMP_IF_NOT_NONE13,3209,918-25.5%
CALL_PY_EXACT_ARGS31,680,84023,716,918-25.1%
MAP_ADD8,7406,620-24.3%
CONTAINS_OP_DICT7,1105,402-24.0%
CALL_BUILTIN_O5,8404,600-21.2%
BINARY_OP_ADD_INT3,7802,980-21.2%
FOR_ITER5,201,2404,110,600-21.0%
RESUME_CHECK41,792,45033,170,089-20.6%
STORE_SUBSCR920740-19.6%
LOAD_ATTR_METHOD_WITH_VALUES4,4003,540-19.5%
COMPARE_OP_STR8,3406,780-18.7%
LOAD_ATTR_INSTANCE_VALUE29,22023,900-18.2%
BINARY_OP_SUBTRACT_INT2,5402,080-18.1%
STORE_ATTR6,7605,640-16.6%
LOAD_SPECIAL4,0003,360-16.0%
CALL_BUILTIN_CLASS2,6802,260-15.7%
CALL_LEN9,4407,980-15.5%
COMPARE_OP_INT11,6009,840-15.2%
PUSH_NULL4,774,8804,113,822-13.8%
CALL_PY_GENERAL4,758,6604,102,022-13.8%
BINARY_SUBSCR_DICT2,6602,300-13.5%
TO_BOOL_INT2,4802,160-12.9%
LOAD_FAST_LOAD_FAST50,798,65044,862,432-11.7%
STORE_ATTR_INSTANCE_VALUE11,40010,160-10.9%
LOAD_FAST_CHECK940840-10.6%
DICT_MERGE1,000900-10.0%
BINARY_SUBSCR_TUPLE_INT2,6402,400-9.1%
BUILD_TUPLE7,6607,060-7.8%
NOP9,519,2808,867,874-6.8%
CALL_LIST_APPEND2,0601,920-6.8%
TO_BOOL_LIST1,2201,160-4.9%
COPY12,76012,260-3.9%
CONTAINS_OP16,846,20016,217,122-3.7%
LOAD_ATTR_SLOT4,8004,660-2.9%
POP_JUMP_IF_FALSE40,781,75040,138,249-1.6%
BINARY_OP5,8405,780-1.0%
LOAD_DEREF8,7608,680-0.9%
POP_JUMP_IF_NONE1,070,4801,078,6320.8%
CALL_FUNCTION_EX16,837,64016,874,5040.2%
RETURN_VALUE32,762,21032,822,5890.2%
LOAD_ATTR12,356,80012,379,4180.2%
LOAD_ATTR_CLASS9,503,1609,519,5440.2%
JUMP_FORWARD4,755,1604,763,1720.2%
TO_BOOL_BOOL16,035,23016,010,424-0.2%
IS_OP43,797,24043,856,3200.1%
BUILD_MAP4,759,9104,766,3140.1%
POP_JUMP_IF_TRUE39,622,46039,660,4220.1%
LOAD_CONST26,201,21026,185,256-0.1%
RETURN_CONST5,345,1205,343,940-0.0%
CALL_BUILTIN_FAST15,993,06015,990,453-0.0%
CALL_METHOD_DESCRIPTOR_FAST4,768,2204,768,6520.0%
BINARY_SUBSCR251,520251,518-0.0%
INTERPRETER_EXIT5,343,1505,343,149-0.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK4,165,8004,165,8000.0%
CHECK_EXC_MATCH3,687,9003,687,9000.0%
POP_EXCEPT3,687,9003,687,9000.0%
PUSH_EXC_INFO3,687,9003,687,9000.0%
RAISE_VARARGS3,686,4003,686,4000.0%
MAKE_FUNCTION8,8008,8000.0%
CALL5,8605,8600.0%
COPY_FREE_VARS4,5004,5000.0%
LOAD_GLOBAL4,5004,5000.0%
LOAD_SUPER_ATTR_METHOD3,4803,4800.0%
SET_FUNCTION_ATTRIBUTE3,2403,2400.0%
MAKE_CELL2,9002,9000.0%
STORE_DEREF2,7602,7600.0%
TO_BOOL2,1802,1800.0%
CALL_KW_PY1,9601,9600.0%
EXIT_INIT_CHECK1,6801,6800.0%
CALL_ALLOC_AND_ENTER_INIT1,6801,6800.0%
YIELD_VALUE1,6401,6400.0%
COMPARE_OP1,6001,6000.0%
RESUME1,4801,4800.0%
IMPORT_NAME1,3401,3400.0%
LIST_EXTEND1,2601,2600.0%
IMPORT_FROM1,1201,1200.0%
LOAD_ATTR_PROPERTY9609600.0%
JUMP_BACKWARD_NO_INTERRUPT9209200.0%
STORE_ATTR_SLOT9009000.0%
RERAISE8808800.0%
CALL_INTRINSIC_18008000.0%
CALL_STR_17607600.0%
UNPACK_SEQUENCE_TUPLE7207200.0%
RETURN_GENERATOR6006000.0%
LOAD_BUILD_CLASS5405400.0%
CALL_TUPLE_14604600.0%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS4004000.0%
LOAD_LOCALS3803800.0%
DICT_UPDATE3003000.0%
CALL_KW_NON_PY2602600.0%
DELETE_SUBSCR2402400.0%
UNPACK_SEQUENCE2402400.0%
LOAD_ATTR_METHOD_LAZY_DICT1801800.0%
BINARY_OP_INPLACE_ADD_UNICODE1601600.0%
BUILD_SET1601600.0%
DELETE_NAME1601600.0%
UNARY_NOT1401400.0%
BINARY_OP_MULTIPLY_INT1401400.0%
FOR_ITER_GEN1201200.0%
LOAD_SUPER_ATTR_ATTR80800.0%
UNARY_NEGATIVE60600.0%
CALL_KW60600.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
LOAD_ATTR_NONDESCRIPTOR_NO_DICT60600.0%
STORE_SLICE20200.0%
END_FOR20200.0%
UNARY_INVERT20200.0%
ENTER_EXECUTOR21,819,316
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
15,40072.5%11,72067.0%-23.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5,28024.9%5,22029.8%-1.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success32057.1%32057.1%0.0%
Failure24042.9%24042.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
or10041.7%10041.7%0.0%
and int8033.3%8033.3%0.0%
power6025.0%6025.0%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,200100.0%780100.0%-35.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
10,9804.2%8,1603.1%-25.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
251,06095.6%251,05896.6%-0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
2400.1%2400.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success8016.7%8016.7%0.0%
Failure40083.3%40083.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other38095.0%38095.0%0.0%
out of range205.0%205.0%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
74,685,330100.0%53,382,039100.0%-28.5%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
3,5000.0%3,2800.0%-6.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4,1800.0%4,1800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1,760100.0%1,760100.0%0.0%
Failure00.0%00.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
init not python2020 / 0 !!2020 / 0 !!0.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
60100.0%60100.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
20,26092.5%16,84091.1%-16.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,5006.8%1,5008.1%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
400.2%400.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success8080.0%8080.0%0.0%
Failure2020.0%2020.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
list20100.0%20100.0%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
13,1700.1%9,8420.1%-25.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
16,841,37099.9%16,212,48599.9%-3.7%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure4,79099.2%4,59799.1%-4.0%
Success400.8%400.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple1,38028.8%1,22026.5%-11.6%
other3,37070.4%3,35773.0%-0.4%
str200.4%
list200.4%200.4%0.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
82,126,25094.0%13,630,55776.8%-83.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5,197,6606.0%4,107,82023.2%-21.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
3200.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure3,26091.1%2,46088.5%-24.5%
Success3208.9%32011.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
dict values84025.8%48019.5%-42.9%
dict items48014.7%34013.8%-29.2%
set1,68051.5%1,42057.7%-15.5%
itertools1805.5%1606.5%-11.1%
ascii string601.8%602.4%0.0%
enumerate200.6%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
10,522,24040.2%10,496,30840.2%-0.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
12,351,93047.2%12,374,58147.3%0.2%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
200.0%200.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
3,266,06012.5%3,266,06012.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure4,0506.1%4,0176.0%-0.8%
Success62,46093.9%62,46094.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
metaclass attribute3,87095.6%3,85796.0%-0.3%
module attr not found601.5%601.5%0.0%
method401.0%401.0%0.0%
overridden200.5%200.5%0.0%
expected error200.5%200.5%0.0%
overriding descriptor200.5%200.5%0.0%
class method obj200.5%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
235,274,590100.0%158,155,816100.0%-32.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,3000.0%2,3000.0%0.0%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
5400.0%5400.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
16,9800.0%16,9800.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success2,700100.0%2,700100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_SUPER_ATTR + +
+ specialization stats for LOAD_SUPER_ATTR family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
3,560100.0%3,560100.0%0.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6,18032.4%5,06030.3%-18.1%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
12,00063.0%10,76064.4%-10.3%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
3001.6%3001.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success8012.5%8012.5%0.0%
Failure56087.5%56087.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
split dict28050.0%28050.0%0.0%
overridden18032.1%18032.1%0.0%
no dict6010.7%6010.7%0.0%
overriding descriptor407.1%407.1%0.0%
+ + +
+ +### STORE_SLICE + +
+ specialization stats for STORE_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
20100.0%20100.0%0.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
12,90093.3%6,12089.2%-52.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
7605.5%5808.5%-23.7%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success160100.0%160100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
16,047,930100.0%16,018,844100.0%-0.2%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,5200.0%1,5200.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
2400.0%2400.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success60090.9%60090.9%0.0%
Failure609.1%609.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
tuple4066.7%4066.7%0.0%
set2033.3%2033.3%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
13,24098.2%5,26095.6%-60.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1200.9%1202.2%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success120100.0%120100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
546,546,04039.2%328,149,61136.0%-40.0%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
807,993,07058.0%546,196,08160.0%-32.4%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
34,684,9402.5%32,986,0583.6%-4.9%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
3,287,6800.2%3,287,1600.4%-0.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
FOR_ITER5,197,66015.0%4,107,82012.5%-21.0%
STORE_ATTR6,1800.0%5,0600.0%-18.1%
CONTAINS_OP16,841,37048.6%16,212,48549.2%-3.7%
BINARY_OP5,2800.0%5,2200.0%-1.1%
LOAD_ATTR12,351,93035.6%12,374,58137.5%0.2%
BINARY_SUBSCR251,0600.7%251,0580.8%-0.0%
CALL4,1800.0%4,1800.0%0.0%
LOAD_GLOBAL2,3000.0%2,3000.0%0.0%
TO_BOOL1,5200.0%1,5200.0%0.0%
COMPARE_OP1,5000.0%1,5000.0%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
CALL_BOUND_METHOD_EXACT_ARGS6200.0%4000.0%-35.5%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK3,263,96099.3%3,263,96099.3%0.0%
LOAD_GLOBAL_MODULE10,2600.3%10,2600.3%0.0%
LOAD_GLOBAL_BUILTIN6,7200.2%6,7200.2%0.0%
LOAD_ATTR_MODULE1,4800.0%1,4800.0%0.0%
CALL_BUILTIN_O1,4400.0%1,4400.0%0.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS5600.0%5600.0%0.0%
LOAD_ATTR_INSTANCE_VALUE5000.0%5000.0%0.0%
FOR_ITER_LIST3200.0%
STORE_ATTR_INSTANCE_VALUE3000.0%3000.0%0.0%
CALL_METHOD_DESCRIPTOR_O2600.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to Python functions inlined36,451,20087.2%36,512,64087.2%0.2%
Frames pushed41,793,970100.0%41,855,409100.0%0.1%
Calls via PyEval_EvalFrame (function vectorcall)5,340,25012.8%5,340,24912.8%-0.0%
Calls via PyEval_EvalFrame (vector)5,341,21012.8%5,341,20912.8%-0.0%
Calls to PyEval_EvalDefault5,343,33012.8%5,343,32912.8%-0.0%
Calls via PyEval_EvalFrame (total)5,343,33012.8%5,343,32912.8%-0.0%
Calls via PyEval_EvalFrame (generator)2,1200.0%2,1200.0%0.0%
Calls via PyEval_EvalFrame (legacy)4200.0%4200.0%0.0%
Calls via PyEval_EvalFrame (build class)5400.0%5400.0%0.0%
Calls via PyEval_EvalFrame (slot)3,9800.0%3,9800.0%0.0%
Calls via PyEval_EvalFrame (function ex)5400.0%5400.0%0.0%
Calls via PyEval_EvalFrame (api)1,4400.0%1,4400.0%0.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created7,374,50017.6%7,374,50017.6%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache misses308,075209,575-32.0%
Method cache collisions607,234445,473-26.6%
Method cache dunder misses304,912241,815-20.7%
Interpreter immortal increfs244,475,73019.6%202,642,22816.1%-17.1%
Interpreter mortal increfs443,294,56035.6%496,853,01039.5%12.1%
Allocations to 4 kbytes7,9400.0%8,8000.0%10.8%
Interpreter mortal decrefs561,120,46041.2%602,287,19241.9%7.3%
Immortal decrefs146,663,40010.8%155,923,27610.8%6.3%
Interpreter immortal decrefs248,053,30018.2%261,125,45418.2%5.3%
Mortal decrefs406,009,15229.8%419,037,12329.1%3.2%
Allocations over 4 kbytes9600.0%9800.0%2.1%
Method cache hits31,704,70531,803,1650.3%
Method cache dunder hits34,025,01834,124,9560.3%
Allocations from freelist120,382,69065.8%120,625,21565.8%0.2%
Frees to freelist120,379,650120,620,9150.2%
Frees79,396,01879,506,9630.1%
Allocations62,665,30034.2%62,740,06034.2%0.1%
Allocations to 512 bytes62,656,40034.2%62,730,28034.2%0.1%
Mortal increfs341,031,86427.4%341,360,63827.2%0.1%
Immortal increfs215,815,96417.3%215,949,05517.2%0.1%
Inline values3,8803,8800.0%
Materialize dict (on request)1,04026.8%1,04026.8%0.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1203,840585,080200520,180
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
40400.0%
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
04040 / 0 !!
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
04040 / 0 !!
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-unpack_sequence-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-unpack_sequence-vs-base.md new file mode 100644 index 00000000..19339c37 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-unpack_sequence-vs-base.md @@ -0,0 +1,1685 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
POP_TOP80240200.0%
JUMP_BACKWARD1,310,720340-100.0%
EXTENDED_ARG2,621,600820-100.0%
FOR_ITER_RANGE1,310,860460-100.0%
STORE_FAST1,311,3601,120-99.9%
UNPACK_SEQUENCE_TUPLE262,584,0003,611,040-98.6%
LOAD_FAST524,288,800262,724,380-49.9%
STORE_FAST_STORE_FAST2,621,440,0001,320,871,380-49.6%
UNPACK_SEQUENCE_LIST261,752,000261,080,940-0.3%
UNPACK_SEQUENCE16,00016,0000.0%
LOAD_GLOBAL_MODULE5805800.0%
PUSH_NULL5605600.0%
RETURN_VALUE4804800.0%
CALL4804800.0%
LOAD_GLOBAL4804800.0%
LOAD_GLOBAL_BUILTIN3803800.0%
RESUME_CHECK3803800.0%
CALL_NON_PY_GENERAL3403400.0%
LOAD_ATTR_MODULE3403400.0%
CALL_BUILTIN_CLASS3203200.0%
LOAD_DEREF2402400.0%
LOAD_FAST_LOAD_FAST2402400.0%
CALL_PY_EXACT_ARGS2402400.0%
GET_ITER1601600.0%
CALL_FUNCTION_EX1601600.0%
LOAD_CONST1601600.0%
BINARY_OP_SUBTRACT_FLOAT1401400.0%
LOAD_ATTR1201200.0%
RESUME1001000.0%
NOP80800.0%
BINARY_OP80800.0%
BUILD_LIST80800.0%
CALL_INTRINSIC_180800.0%
COPY_FREE_VARS80800.0%
LIST_EXTEND80800.0%
BINARY_OP_ADD_FLOAT60600.0%
CALL_TUPLE_160600.0%
FOR_ITER40400.0%
ENTER_EXECUTOR2,639,140
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4014.3%4014.3%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
20071.4%20071.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
24021.8%24021.8%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
62056.4%62056.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success240100.0%240100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,310,860100.0%46092.0%-100.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.0%204.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6013.0%6013.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
34073.9%34073.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success60100.0%60100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
24016.7%24016.7%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
96066.7%96066.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success240100.0%240100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
2,968,0000.6%430,2000.2%-85.5%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
521,368,00099.4%264,261,78099.8%-49.3%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
8,0000.0%8,0000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success64,000100.0%15,980100.0%-75.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
2,968,0000.1%430,2000.0%-85.5%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
3,150,975,06085.7%1,586,239,92085.7%-49.7%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
522,681,70014.2%264,265,08014.3%-49.4%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
17,2000.0%17,2000.0%0.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
UNPACK_SEQUENCE8,00093.0%8,00093.0%0.0%
CALL2402.8%2402.8%0.0%
LOAD_GLOBAL2402.8%2402.8%0.0%
LOAD_ATTR600.7%600.7%0.0%
BINARY_OP400.5%400.5%0.0%
FOR_ITER200.2%200.2%0.0%
BINARY_SLICE00.0%00.0%
STORE_SLICE00.0%00.0%
BINARY_SUBSCR00.0%00.0%
GET_ITER00.0%00.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
UNPACK_SEQUENCE_LIST1,272,00042.9%7,2601.7%-99.4%
UNPACK_SEQUENCE_TUPLE1,696,00057.1%422,94098.3%-75.1%
GET_ITER00.0%00.0%
NOP00.0%00.0%
POP_TOP00.0%00.0%
PUSH_NULL00.0%00.0%
RETURN_VALUE00.0%00.0%
BUILD_LIST00.0%00.0%
CALL_FUNCTION_EX00.0%00.0%
CALL_INTRINSIC_100.0%00.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault00.0%00.0%
Calls to Python functions inlined480100.0%480100.0%0.0%
Calls via PyEval_EvalFrame (total)00.0%00.0%
Calls via PyEval_EvalFrame (vector)00.0%00.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)00.0%00.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)16033.3%16033.3%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed480100.0%480100.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache misses192742.1%
Method cache collisions192742.1%
Mortal increfs2,920,5000.1%1,739,7200.0%-40.4%
Mortal decrefs2,920,9600.1%1,742,0610.0%-40.4%
Immortal increfs33,390,9580.6%20,362,6340.4%-39.0%
Allocations to 512 bytes4,190,680100.0%3,006,260100.0%-28.3%
Allocations4,190,680100.0%3,006,540100.0%-28.3%
Frees4,190,5603,007,941-28.2%
Method cache hits4133-19.5%
Allocations from freelist6200.0%7400.0%19.4%
Frees to freelist66078018.2%
Interpreter mortal increfs524,291,2409.1%535,968,3809.3%2.2%
Interpreter mortal decrefs528,481,8409.2%538,974,5609.3%2.0%
Immortal decrefs2,7380.0%2,7530.0%0.5%
Interpreter immortal increfs5,213,680,62090.3%5,225,524,82090.4%0.2%
Interpreter immortal decrefs5,242,921,86090.8%5,245,560,98090.7%0.1%
Allocations to 4 kbytes00.0%200.0%20 / 0 !!
Allocations over 4 kbytes00.0%2600.0%260 / 0 !!
Inline values00
Materialize dict (on request)00
Materialize dict (new key)00
Materialize dict (too big)00
Materialize dict (str subclass)00
Method cache dunder hits00
Method cache dunder misses00
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-unpickle-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-unpickle-vs-base.md new file mode 100644 index 00000000..3094372d --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-unpickle-vs-base.md @@ -0,0 +1,1455 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD163,840640-99.6%
FOR_ITER_TUPLE163,820660-99.6%
CALL_BUILTIN_FAST_WITH_KEYWORDS2,457,38011,380-99.5%
LOAD_FAST4,957,20024,620-99.5%
PUSH_NULL2,458,24012,240-99.5%
POP_TOP2,457,68013,020-99.5%
FOR_ITER_RANGE41,020360-99.1%
STORE_FAST164,4001,520-99.1%
GET_ITER41,040460-98.9%
CALL1,0801,0800.0%
LOAD_ATTR5805800.0%
LOAD_ATTR_MODULE4204200.0%
LOAD_GLOBAL_MODULE3603600.0%
LOAD_GLOBAL2802800.0%
LOAD_DEREF2402400.0%
CALL_NON_PY_GENERAL1801800.0%
RETURN_VALUE1601600.0%
CALL_FUNCTION_EX1601600.0%
RESUME_CHECK1201200.0%
NOP80800.0%
BUILD_LIST80800.0%
BUILD_TUPLE80800.0%
CALL_INTRINSIC_180800.0%
COPY_FREE_VARS80800.0%
FOR_ITER80800.0%
LIST_EXTEND80800.0%
LOAD_FAST_LOAD_FAST80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
CALL_BUILTIN_CLASS60600.0%
LOAD_GLOBAL_BUILTIN60600.0%
BINARY_OP40400.0%
RESUME40400.0%
ENTER_EXECUTOR3,820
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2020.0%2020.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6060.0%6060.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,457,440100.0%11,44091.4%-99.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5400.0%5404.3%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success540100.0%540100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
204,840100.0%1,02092.7%-99.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
400.0%403.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success40100.0%40100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
38038.0%38038.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
42042.0%42042.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success200100.0%200100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
14020.0%14020.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
42060.0%42060.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success140100.0%140100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
2,663,48020.6%13,66018.7%-99.5%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
10,243,56079.4%57,48078.5%-99.4%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
2,0600.0%2,0602.8%0.0%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
00.0%00.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
CALL54048.2%54048.2%0.0%
LOAD_ATTR38033.9%38033.9%0.0%
LOAD_GLOBAL14012.5%14012.5%0.0%
FOR_ITER403.6%403.6%0.0%
BINARY_OP201.8%201.8%0.0%
BINARY_SLICE00.0%00.0%
STORE_SLICE00.0%00.0%
BINARY_SUBSCR00.0%00.0%
GET_ITER00.0%00.0%
NOP00.0%00.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault00.0%00.0%
Calls to Python functions inlined160100.0%160100.0%0.0%
Calls via PyEval_EvalFrame (total)00.0%00.0%
Calls via PyEval_EvalFrame (vector)00.0%00.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)00.0%00.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)160100.0%160100.0%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed160100.0%160100.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache dunder misses14,4226,771-53.1%
Interpreter immortal decrefs20,9600.0%24,8200.0%18.4%
Allocations over 4 kbytes3200.0%3600.0%12.5%
Interpreter mortal increfs5,081,9600.8%5,203,0800.8%2.4%
Interpreter mortal decrefs7,642,5201.1%7,722,7801.1%1.1%
Method cache collisions833,242825,739-0.9%
Method cache dunder hits1,624,6981,632,3490.5%
Immortal decrefs61,480,8798.7%61,465,1458.6%-0.0%
Immortal increfs207,358,07230.8%207,342,83830.8%-0.0%
Mortal decrefs641,469,31990.3%641,510,63590.3%0.0%
Method cache misses819,424819,4340.0%
Frees202,403,042202,403,5540.0%
Method cache hits4,096,8564,096,846-0.0%
Allocations195,033,54093.0%195,033,60093.0%0.0%
Mortal increfs460,468,46368.4%460,468,51768.4%0.0%
Allocations to 512 bytes191,756,10091.4%191,756,12091.4%0.0%
Allocations from freelist14,746,4007.0%14,746,4007.0%0.0%
Frees to freelist14,746,34014,746,3400.0%
Allocations to 4 kbytes3,277,1201.6%3,277,1201.6%0.0%
Inline values00
Interpreter immortal increfs600.0%600.0%0.0%
Materialize dict (on request)00
Materialize dict (new key)00
Materialize dict (too big)00
Materialize dict (str subclass)00
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-unpickle_list-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-unpickle_list-vs-base.md new file mode 100644 index 00000000..85e4238c --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-unpickle_list-vs-base.md @@ -0,0 +1,1437 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD327,680320-99.9%
FOR_ITER_RANGE327,740360-99.9%
CALL_BUILTIN_FAST_WITH_KEYWORDS3,276,6603,660-99.9%
POP_TOP3,276,8803,960-99.9%
LOAD_FAST6,554,2408,240-99.9%
PUSH_NULL3,277,2804,280-99.9%
STORE_FAST328,000700-99.8%
CALL6006000.0%
LOAD_ATTR3003000.0%
LOAD_ATTR_MODULE3003000.0%
LOAD_DEREF2402400.0%
LOAD_GLOBAL_MODULE2402400.0%
LOAD_GLOBAL2002000.0%
CALL_NON_PY_GENERAL1801800.0%
RETURN_VALUE1601600.0%
CALL_FUNCTION_EX1601600.0%
RESUME_CHECK1201200.0%
GET_ITER80800.0%
NOP80800.0%
BUILD_LIST80800.0%
CALL_INTRINSIC_180800.0%
COPY_FREE_VARS80800.0%
LIST_EXTEND80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
CALL_BUILTIN_CLASS60600.0%
LOAD_GLOBAL_BUILTIN60600.0%
BINARY_OP40400.0%
FOR_ITER40400.0%
RESUME40400.0%
ENTER_EXECUTOR60
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2020.0%2020.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6060.0%6060.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
3,276,720100.0%3,72086.1%-99.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3000.0%3006.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success300100.0%300100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
327,740100.0%36090.0%-99.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
200.0%205.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20100.0%20100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
18030.0%18030.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
30050.0%30050.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success120100.0%120100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
10020.0%10020.0%0.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
30060.0%30060.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success100100.0%100100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
13,765,16079.2%18,64075.0%-99.9%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
3,605,42020.8%5,04020.3%-99.9%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
1,1800.0%1,1804.7%0.0%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
00.0%00.0%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
CALL30048.4%30048.4%0.0%
LOAD_ATTR18029.0%18029.0%0.0%
LOAD_GLOBAL10016.1%10016.1%0.0%
BINARY_OP203.2%203.2%0.0%
FOR_ITER203.2%203.2%0.0%
BINARY_SLICE00.0%00.0%
STORE_SLICE00.0%00.0%
BINARY_SUBSCR00.0%00.0%
GET_ITER00.0%00.0%
NOP00.0%00.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault00.0%00.0%
Calls to Python functions inlined160100.0%160100.0%0.0%
Calls via PyEval_EvalFrame (total)00.0%00.0%
Calls via PyEval_EvalFrame (vector)00.0%00.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)00.0%00.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)160100.0%160100.0%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created00.0%00.0%
Frames pushed160100.0%160100.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache collisions819314.8%
Allocations to 4 kbytes1600.0%1800.0%12.5%
Interpreter immortal decrefs20,8000.0%20,8800.0%0.4%
Interpreter mortal increfs6,555,7400.7%6,555,8000.7%0.0%
Interpreter mortal decrefs10,140,2000.5%10,140,2800.5%0.0%
Allocations124,826,68038.1%124,826,70038.1%0.0%
Mortal increfs321,132,54032.4%321,132,56032.4%0.0%
Immortal increfs662,237,98866.9%662,238,00866.9%0.0%
Mortal decrefs530,847,94928.6%530,847,94628.6%-0.0%
Immortal decrefs1,314,013,43970.8%1,314,013,44270.8%0.0%
Allocations from freelist203,161,66061.9%203,161,66061.9%0.0%
Frees to freelist203,161,860203,161,8600.0%
Allocations to 512 bytes124,826,44038.1%124,826,44038.1%0.0%
Allocations over 4 kbytes800.0%800.0%0.0%
Frees232,960,804232,960,8040.0%
Inline values00
Interpreter immortal increfs600.0%600.0%0.0%
Materialize dict (on request)00
Materialize dict (new key)00
Materialize dict (too big)00
Materialize dict (str subclass)00
Method cache hits3,277,0363,277,0360.0%
Method cache misses1241240.0%
Method cache dunder hits00
Method cache dunder misses00
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-unpickle_pure_python-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-unpickle_pure_python-vs-base.md new file mode 100644 index 00000000..6cf88144 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-unpickle_pure_python-vs-base.md @@ -0,0 +1,2874 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
JUMP_BACKWARD33,457,1202,360-100.0%
FOR_ITER_RANGE6,965,800205,440-97.1%
BINARY_OP_ADD_INT6,758,440205,140-97.0%
BINARY_SUBSCR_LIST_INT13,516,900410,300-97.0%
FOR_ITER_TUPLE10,220660-93.5%
FOR_ITER_LIST11,000740-93.3%
UNPACK_SEQUENCE_TWO_TUPLE13,1401,320-90.0%
STORE_FAST_STORE_FAST13,2001,380-89.5%
NOP30,632,0803,955,300-87.1%
FOR_ITER3,4201,280-62.6%
LOAD_ATTR_METHOD_LAZY_DICT51,164,20024,624,880-51.9%
TO_BOOL_ALWAYS_TRUE51,174,00024,632,320-51.9%
CALL_BOUND_METHOD_EXACT_ARGS51,753,08025,070,740-51.6%
COMPARE_OP_INT51,645,68025,101,920-51.4%
CALL_METHOD_DESCRIPTOR_FAST51,806,30025,267,720-51.2%
POP_JUMP_IF_FALSE104,070,00050,805,020-51.2%
CALL_BOUND_METHOD_GENERAL23,80011,980-49.7%
PUSH_NULL54,420,48027,712,860-49.1%
CALL_METHOD_DESCRIPTOR_NOARGS25,34013,520-46.6%
CALL_LEN61,420,54034,893,120-43.2%
STORE_SUBSCR_DICT16,860,50010,307,140-38.9%
LOAD_FAST584,841,520365,028,220-37.6%
TO_BOOL77,947,00051,420,480-34.0%
RESUME_CHECK80,095,30053,242,200-33.5%
LOAD_FAST_LOAD_FAST41,867,68028,517,300-31.9%
LOAD_ATTR_INSTANCE_VALUE172,425,000118,967,700-31.0%
STORE_FAST110,803,12077,640,080-29.9%
LOAD_GLOBAL_BUILTIN98,879,82072,285,120-26.9%
LOAD_CONST124,308,16090,926,380-26.9%
POP_JUMP_IF_TRUE105,156,08078,613,420-25.2%
EXTENDED_ARG14,80011,120-24.9%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS14,84011,160-24.8%
TO_BOOL_INT15,74012,060-23.4%
CONTAINS_OP_DICT15,94012,260-23.1%
JUMP_FORWARD18,00014,320-20.4%
TO_BOOL_NONE779,400623,260-20.0%
BINARY_OP39,94032,500-18.6%
CALL_METHOD_DESCRIPTOR_O41,42033,980-18.0%
POP_JUMP_IF_NONE221,680191,340-13.7%
CALL_PY_GENERAL178,080159,160-10.6%
IS_OP140,720127,320-9.5%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES198,240179,720-9.3%
STORE_ATTR_INSTANCE_VALUE4,662,0004,333,200-7.1%
CALL_BUILTIN_FAST2,450,1002,280,220-6.9%
CALL_TYPE_1121,400114,700-5.5%
LOAD_ATTR_METHOD_WITH_VALUES803,940765,760-4.7%
CALL_ALLOC_AND_ENTER_INIT153,800146,700-4.6%
BUILD_TUPLE118,320114,640-3.1%
CALL_KW_NON_PY256,280249,180-2.8%
LOAD_ATTR_METHOD_NO_DICT1,082,3601,060,160-2.1%
CALL_NON_PY_GENERAL462,320455,220-1.5%
LOAD_ATTR_MODULE564,240557,140-1.3%
GET_ITER208,240206,060-1.0%
LOAD_GLOBAL_MODULE29,699,48029,653,580-0.2%
TO_BOOL_BOOL27,185,78027,155,620-0.1%
CALL_PY_EXACT_ARGS28,009,54027,979,140-0.1%
CALL_BUILTIN_O15,621,36015,605,800-0.1%
RETURN_CONST27,399,28027,375,600-0.1%
POP_TOP42,777,06042,760,900-0.0%
CALL_ISINSTANCE26,982,76026,975,660-0.0%
RETURN_VALUE52,697,40052,686,200-0.0%
BINARY_SUBSCR_TUPLE_INT1,234,2001,234,120-0.0%
BINARY_SUBSCR51,420,34051,420,3400.0%
BINARY_SUBSCR_DICT30,361,60030,361,6000.0%
CALL_BUILTIN_CLASS9,677,9209,677,9200.0%
LOAD_ATTR2,011,8402,011,8400.0%
BUILD_LIST870,480870,4800.0%
BUILD_MAP358,720358,7200.0%
CALL_LIST_APPEND358,380358,3800.0%
SWAP309,520309,5200.0%
INTERPRETER_EXIT307,560307,5600.0%
COMPARE_OP159,900159,9000.0%
COPY156,160156,1600.0%
STORE_ATTR155,420155,4200.0%
STORE_SUBSCR154,320154,3200.0%
EXIT_INIT_CHECK153,800153,8000.0%
CHECK_EXC_MATCH153,600153,6000.0%
POP_EXCEPT153,600153,6000.0%
PUSH_EXC_INFO153,600153,6000.0%
DELETE_FAST153,600153,6000.0%
RAISE_VARARGS153,600153,6000.0%
UNPACK_SEQUENCE_TUPLE153,580153,5800.0%
CONTAINS_OP51,62051,6200.0%
CALL_FUNCTION_EX51,44051,4400.0%
CALL8,1208,1200.0%
LOAD_GLOBAL5,4005,4000.0%
RESUME1,1801,1800.0%
POP_JUMP_IF_NOT_NONE4804800.0%
CALL_KW2802800.0%
LOAD_DEREF2402400.0%
CALL_KW_PY2202200.0%
UNPACK_SEQUENCE1601600.0%
COMPARE_OP_STR1201200.0%
CALL_INTRINSIC_180800.0%
COPY_FREE_VARS80800.0%
LIST_EXTEND80800.0%
BINARY_OP_SUBTRACT_FLOAT60600.0%
ENTER_EXECUTOR27,005,620
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6,758,50099.4%205,20086.3%-97.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
39,0200.6%31,58013.3%-19.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success606.5%606.5%0.0%
Failure86093.5%86093.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
add other84097.7%84097.7%0.0%
rshift202.3%202.3%0.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
45,112,70046.7%32,006,02038.4%-29.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
51,404,98053.3%51,404,98061.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success1801.2%1801.2%0.0%
Failure15,18098.8%15,18098.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
buffer int11,26074.2%11,26074.2%0.0%
out of range3,92025.8%3,92025.8%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
282,613,38094.1%175,922,80090.9%-37.8%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
17,576,4805.9%17,576,7009.1%0.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4,0600.0%4,0600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success335,800100.0%335,820100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
14050.0%14050.0%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
51,645,10099.7%25,101,34099.4%-51.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
158,6000.3%158,6000.6%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
7000.0%7000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success84064.6%84064.6%0.0%
Failure46035.4%46035.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
big int460100.0%460100.0%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
15,94023.6%12,26019.2%-23.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
51,34076.0%51,34080.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success6021.4%6021.4%0.0%
Failure22078.6%22078.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
str20090.9%20090.9%0.0%
list209.1%209.1%0.0%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6,987,020100.0%206,84099.4%-97.0%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3,1400.0%1,0400.5%-66.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure18064.3%14058.3%-22.2%
Success10035.7%10041.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
enumerate180100.0%140100.0%-22.2%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
226,237,98099.1%146,155,36098.6%-35.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,002,4200.9%2,002,4201.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success6,72071.3%6,72071.3%0.0%
Failure2,70028.7%2,70028.7%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
method2,50092.6%2,50092.6%0.0%
builtin class method2007.4%2007.4%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
128,579,300100.0%101,938,700100.0%-20.7%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
2,7000.0%2,7000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success2,700100.0%2,700100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
4,662,00096.8%4,333,20096.5%-7.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
154,4003.2%154,4003.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success80078.4%80078.4%0.0%
Failure22021.6%22021.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
not managed dict220100.0%220100.0%0.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
16,860,50099.1%10,307,14098.5%-38.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
153,6600.9%153,6601.5%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success609.1%609.1%0.0%
Failure60090.9%60090.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
out of range40066.7%40066.7%0.0%
list slice20033.3%20033.3%0.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
77,927,06073.2%51,407,00064.5%-34.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1,135,8001.1%875,1401.1%-22.9%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
27,412,76025.7%27,353,16034.3%-0.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure19,44047.0%12,98043.3%-33.2%
Success21,92053.0%17,00056.7%-22.4%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
bytes19,40099.8%12,94099.7%-33.3%
tuple400.2%400.3%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
166,72099.9%154,90099.9%-7.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
800.0%800.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success80100.0%80100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
876,921,18037.4%576,939,10036.6%-34.2%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
1,316,142,76056.2%876,673,26055.6%-33.4%
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
131,957,7605.6%105,421,6606.7%-20.1%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
18,712,9800.8%18,452,5401.2%-1.4%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
TO_BOOL77,927,06059.1%51,407,00048.8%-34.0%
BINARY_OP39,0200.0%31,5800.0%-19.1%
BINARY_SUBSCR51,404,98039.0%51,404,98048.8%0.0%
LOAD_ATTR2,002,4201.5%2,002,4201.9%0.0%
COMPARE_OP158,6000.1%158,6000.2%0.0%
STORE_ATTR154,4000.1%154,4000.1%0.0%
STORE_SUBSCR153,6600.1%153,6600.1%0.0%
CONTAINS_OP51,3400.0%51,3400.0%0.0%
CALL4,0600.0%4,0600.0%0.0%
FOR_ITER3,1400.0%
LOAD_GLOBAL2,7000.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
TO_BOOL_ALWAYS_TRUE567,6403.0%437,3602.4%-23.0%
TO_BOOL_NONE568,1603.0%437,7802.4%-22.9%
CALL_PY_EXACT_ARGS17,576,48093.9%17,576,70095.3%0.0%
COMPARE_OP_INT7000.0%7000.0%0.0%
CACHE00.0%00.0%
CHECK_EXC_MATCH00.0%00.0%
EXIT_INIT_CHECK00.0%00.0%
GET_ITER00.0%00.0%
INTERPRETER_EXIT00.0%00.0%
NOP00.0%00.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls to PyEval_EvalDefault307,5600.4%307,5600.4%0.0%
Calls to Python functions inlined79,788,92099.6%79,788,92099.6%0.0%
Calls via PyEval_EvalFrame (total)307,5600.4%307,5600.4%0.0%
Calls via PyEval_EvalFrame (vector)307,5600.4%307,5600.4%0.0%
Calls via PyEval_EvalFrame (generator)00.0%00.0%
Calls via PyEval_EvalFrame (legacy)00.0%00.0%
Calls via PyEval_EvalFrame (function vectorcall)307,5600.4%307,5600.4%0.0%
Calls via PyEval_EvalFrame (build class)00.0%00.0%
Calls via PyEval_EvalFrame (slot)00.0%00.0%
Calls via PyEval_EvalFrame (function ex)1600.0%1600.0%0.0%
Calls via PyEval_EvalFrame (api)00.0%00.0%
Calls via PyEval_EvalFrame (method)00.0%00.0%
Frame objects created307,2000.4%307,2000.4%0.0%
Frames pushed80,250,280100.2%80,250,280100.2%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache dunder misses1,0252,658159.3%
Method cache collisions56,72569,25222.1%
Method cache misses56,94967,66418.8%
Interpreter immortal increfs488,428,94030.9%454,999,00028.4%-6.8%
Interpreter mortal increfs888,368,34056.1%942,249,54058.8%6.1%
Interpreter mortal decrefs930,056,50052.8%983,935,18053.4%5.8%
Interpreter immortal decrefs649,944,10036.9%676,975,72036.8%4.2%
Method cache hits2,436,7512,426,036-0.4%
Allocations over 4 kbytes51,2800.2%51,4600.2%0.4%
Method cache dunder hits523,835522,202-0.3%
Mortal decrefs55,183,0873.1%55,201,9833.0%0.0%
Allocations to 4 kbytes614,8802.0%615,0802.0%0.0%
Mortal increfs68,390,8294.3%68,403,8154.3%0.0%
Immortal decrefs124,985,2417.1%125,005,4816.8%0.0%
Immortal increfs136,955,7098.7%136,977,0398.5%0.0%
Allocations from freelist4,327,22014.1%4,327,82014.1%0.0%
Frees to freelist4,330,8404,331,4400.0%
Frees26,916,51126,919,3940.0%
Allocations26,258,38085.9%26,258,86085.9%0.0%
Allocations to 512 bytes25,592,22083.7%25,592,32083.7%0.0%
Inline values307,680307,6800.0%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1000000
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files20200.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-vs-base.md new file mode 100644 index 00000000..9e125c48 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-vs-base.md @@ -0,0 +1,4791 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
STORE_SLICE149,990,080140,540-99.9%
JUMP_BACKWARD6,879,268,42943,217,636-99.4%
FOR_ITER_RANGE837,682,48742,688,605-94.9%
JUMP_BACKWARD_NO_INTERRUPT512,687,72227,540,777-94.6%
GET_ANEXT133,515,6808,000,900-94.0%
BINARY_SUBSCR_LIST_INT3,324,578,375211,561,394-93.6%
FOR_ITER1,389,129,21694,279,774-93.2%
STORE_FAST_LOAD_FAST242,241,32919,105,424-92.1%
FOR_ITER_LIST2,678,838,071216,367,376-91.9%
STORE_SUBSCR_LIST_INT604,726,16058,364,053-90.3%
SWAP2,523,304,673267,144,023-89.4%
COPY2,703,909,930288,129,844-89.3%
BINARY_OP_ADD_INT4,475,328,038498,801,378-88.9%
BINARY_OP_ADD_FLOAT728,937,46482,173,016-88.7%
STORE_SUBSCR906,404,666105,575,470-88.4%
EXTENDED_ARG487,613,71758,624,450-88.0%
LIST_APPEND274,989,13434,655,110-87.4%
CONTAINS_OP_SET1,963,923,736252,072,227-87.2%
COMPARE_OP_FLOAT117,236,21815,356,174-86.9%
UNPACK_SEQUENCE1,786,170238,575-86.6%
BINARY_OP_MULTIPLY_FLOAT1,478,368,434198,205,041-86.6%
CALL_LIST_APPEND1,539,642,675207,168,616-86.5%
CALL_LEN1,777,116,956250,238,033-85.9%
COMPARE_OP_STR2,139,714,763313,868,845-85.3%
CONVERT_VALUE141,186,33820,925,638-85.2%
CONTAINS_OP262,232,11939,609,828-84.9%
COMPARE_OP688,856,309107,534,588-84.4%
CALL_TYPE_1451,119,55171,176,496-84.2%
UNARY_INVERT13,794,4112,267,686-83.6%
BINARY_OP_SUBTRACT_INT2,069,201,738343,086,043-83.4%
BINARY_SUBSCR3,235,959,264552,103,354-82.9%
UNARY_NOT77,296,77813,355,266-82.7%
TO_BOOL_INT352,596,42461,324,077-82.6%
CALL_BUILTIN_FAST1,314,978,138246,052,459-81.3%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS199,679,62537,694,436-81.1%
FORMAT_SIMPLE151,377,24929,135,629-80.8%
BUILD_STRING76,588,83314,754,093-80.7%
BUILD_LIST724,621,391141,941,992-80.4%
BINARY_SUBSCR_STR_INT1,688,680,792340,615,464-79.8%
BUILD_SLICE209,646,51743,076,691-79.5%
LOAD_CONST17,412,340,7383,583,060,601-79.4%
COMPARE_OP_INT3,533,174,835730,934,767-79.3%
FOR_ITER_TUPLE639,788,455132,543,363-79.3%
LOAD_GLOBAL_BUILTIN7,119,654,2171,476,156,964-79.3%
POP_JUMP_IF_FALSE13,104,842,8872,805,067,155-78.6%
CALL_BUILTIN_O1,149,113,099255,700,185-77.7%
UNPACK_SEQUENCE_TUPLE768,901,845171,299,129-77.7%
BINARY_OP_ADD_UNICODE95,758,38621,337,622-77.7%
BINARY_OP_SUBTRACT_FLOAT473,358,247107,077,608-77.4%
LOAD_ATTR_METHOD_NO_DICT2,826,888,765639,674,934-77.4%
LOAD_ATTR_CLASS564,453,527129,451,054-77.1%
LOAD_FAST_LOAD_FAST12,470,106,1292,860,070,833-77.1%
NOP3,205,560,730745,016,086-76.8%
STORE_FAST16,482,330,3733,930,985,032-76.2%
CONTAINS_OP_DICT517,243,676125,083,568-75.8%
UNPACK_SEQUENCE_TWO_TUPLE975,808,772243,363,109-75.1%
CALL_BUILTIN_FAST_WITH_KEYWORDS145,047,75536,348,119-74.9%
MAP_ADD43,468,07211,005,649-74.7%
DELETE_SUBSCR169,499,24044,239,740-73.9%
SEND_GEN701,296,882185,441,168-73.6%
BINARY_OP1,421,108,249381,542,635-73.2%
TO_BOOL_STR114,103,55131,260,475-72.6%
LOAD_FAST45,663,199,71712,663,498,637-72.3%
LOAD_ATTR_METHOD_WITH_VALUES2,775,013,100780,682,459-71.9%
CALL_KW_BOUND_METHOD2,699,316772,316-71.4%
LOAD_DEREF1,572,284,082457,767,743-70.9%
TO_BOOL_NONE422,772,436127,706,206-69.8%
BUILD_TUPLE1,442,300,296435,858,197-69.8%
GET_YIELD_FROM_ITER47,799,91814,827,190-69.0%
SET_FUNCTION_ATTRIBUTE127,360,78040,826,194-67.9%
TO_BOOL_LIST103,441,31633,527,882-67.6%
TO_BOOL_BOOL4,194,423,2151,378,814,419-67.1%
BINARY_OP_MULTIPLY_INT367,186,856120,821,884-67.1%
MAKE_FUNCTION153,015,20550,596,220-66.9%
CALL_NON_PY_GENERAL1,050,165,897355,878,324-66.1%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK26,642,9839,072,618-65.9%
GET_ITER1,261,638,155430,741,760-65.9%
JUMP_FORWARD491,389,891169,656,348-65.5%
PUSH_NULL1,434,364,493496,209,825-65.4%
IS_OP642,107,231224,701,937-65.0%
CALL_STR_199,716,72535,086,187-64.8%
CALL_KW_NON_PY61,305,84221,766,028-64.5%
UNARY_NEGATIVE170,048,17860,900,092-64.2%
POP_JUMP_IF_TRUE2,166,857,153779,052,408-64.0%
CALL_PY_GENERAL409,646,839149,381,174-63.5%
LOAD_ATTR_INSTANCE_VALUE6,116,296,0292,253,797,918-63.2%
LOAD_ATTR_SLOT1,318,178,881492,920,075-62.6%
CALL_METHOD_DESCRIPTOR_NOARGS217,638,26581,835,691-62.4%
BINARY_OP_INPLACE_ADD_UNICODE9,230,9443,549,181-61.6%
POP_JUMP_IF_NONE341,347,414131,253,658-61.5%
FOR_ITER_GEN241,241,83293,258,303-61.3%
TO_BOOL_ALWAYS_TRUE323,678,070126,088,768-61.0%
BINARY_SUBSCR_DICT828,670,937327,503,597-60.5%
CALL_METHOD_DESCRIPTOR_O218,853,29887,374,862-60.1%
DELETE_FAST1,815,675725,613-60.0%
STORE_SUBSCR_DICT275,661,055111,576,550-59.5%
CALL_METHOD_DESCRIPTOR_FAST501,933,215205,101,118-59.1%
STORE_GLOBAL8,209,8083,461,588-57.8%
POP_JUMP_IF_NOT_NONE418,970,673178,012,684-57.5%
CALL_PY_EXACT_ARGS3,811,700,5191,636,078,448-57.1%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES296,371,972129,522,723-56.3%
TO_BOOL302,181,434133,020,227-56.0%
CALL_BOUND_METHOD_GENERAL17,529,5127,835,732-55.3%
STORE_FAST_STORE_FAST3,617,697,1321,660,063,871-54.1%
BINARY_SLICE245,751,009113,063,766-54.0%
CALL_BUILTIN_CLASS208,879,71897,289,066-53.4%
STORE_ATTR_INSTANCE_VALUE1,467,749,544690,294,614-53.0%
CALL_ISINSTANCE910,423,545434,442,270-52.3%
UNPACK_EX1,041,440502,720-51.7%
LOAD_ATTR827,157,794406,959,014-50.8%
CALL_TUPLE_118,705,3479,313,327-50.2%
LOAD_ATTR_METHOD_LAZY_DICT125,431,19663,429,505-49.4%
RESUME_CHECK7,372,271,4513,813,827,274-48.3%
STORE_NAME1,250,192651,872-47.9%
BINARY_SUBSCR_TUPLE_INT378,675,287199,779,888-47.2%
LOAD_SPECIAL19,726,63210,803,602-45.2%
LOAD_ATTR_NONDESCRIPTOR_NO_DICT113,905,91263,085,802-44.6%
CALL_BOUND_METHOD_EXACT_ARGS245,272,316135,875,575-44.6%
LOAD_GLOBAL_MODULE4,021,061,4422,241,372,883-44.3%
LOAD_ATTR_MODULE408,376,223228,147,552-44.1%
STORE_ATTR_SLOT620,406,531350,149,002-43.6%
SET_ADD101,32258,419-42.3%
LOAD_ATTR_WITH_HINT107,397,50061,942,083-42.3%
LOAD_FAST_AND_CLEAR85,856,71049,907,198-41.9%
CALL_ALLOC_AND_ENTER_INIT121,456,63870,929,814-41.6%
POP_TOP3,504,173,3612,109,667,759-39.8%
STORE_ATTR45,150,27828,716,159-36.4%
CALL_KW_PY86,464,29557,023,086-34.1%
RETURN_VALUE4,307,378,0972,982,639,839-30.8%
BINARY_SUBSCR_GETITEM205,229,025143,951,812-29.9%
BUILD_MAP129,595,93591,585,625-29.3%
COPY_FREE_VARS418,145,032299,445,829-28.4%
LOAD_NAME14,183,62310,336,423-27.1%
DICT_MERGE48,848,42335,899,680-26.5%
UNPACK_SEQUENCE_LIST344,206,197262,537,793-23.7%
RETURN_GENERATOR410,721,353313,324,167-23.7%
LOAD_ATTR_PROPERTY79,651,17260,770,525-23.7%
RETURN_CONST1,771,645,7261,444,431,745-18.5%
LIST_EXTEND15,587,63813,142,825-15.7%
IMPORT_NAME13,881,91011,708,304-15.7%
LOAD_SUPER_ATTR_METHOD64,527,18754,673,737-15.3%
LOAD_FAST_CHECK10,524,4418,948,175-15.0%
STORE_DEREF46,803,01740,098,057-14.3%
RERAISE3,083,7693,475,03112.7%
IMPORT_FROM14,410,40512,583,176-12.7%
BUILD_SET739,208657,934-11.0%
MAKE_CELL76,399,96868,486,756-10.4%
DELETE_ATTR545,641506,590-7.2%
CALL_FUNCTION_EX99,239,18796,618,637-2.6%
YIELD_VALUE1,400,919,0741,370,968,225-2.1%
INTERPRETER_EXIT1,888,312,9201,857,317,027-1.6%
LOAD_BUILD_CLASS30,12929,689-1.5%
CALL_INTRINSIC_1140,365,817138,353,402-1.4%
CHECK_EXC_MATCH21,334,93021,069,898-1.2%
POP_EXCEPT21,673,00921,405,364-1.2%
PUSH_EXC_INFO21,673,17021,408,085-1.2%
GET_AWAITABLE157,988,337156,709,435-0.8%
LOAD_SUPER_ATTR_ATTR5,801,9915,762,544-0.7%
RAISE_VARARGS5,855,7875,833,973-0.4%
CLEANUP_THROW149,911149,591-0.2%
END_FOR82,506,59782,407,222-0.1%
STORE_ATTR_WITH_HINT10,868,21210,858,491-0.1%
END_SEND331,088,750330,793,370-0.1%
EXIT_INIT_CHECK119,170,135119,220,0390.0%
SEND144,260,170144,218,044-0.0%
CALL1,206,5441,206,255-0.0%
LOAD_SUPER_ATTR12,00512,004-0.0%
CALL_KW65,33665,334-0.0%
LOAD_GLOBAL20,324,78420,324,737-0.0%
INSTRUMENTED_LINE77,693,92077,693,9200.0%
INSTRUMENTED_RESUME38,846,24038,846,2400.0%
INSTRUMENTED_RETURN_VALUE38,845,68038,845,6800.0%
END_ASYNC_FOR8,000,0008,000,0000.0%
GET_AITER8,000,0008,000,0000.0%
RESUME255,952255,9520.0%
LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN94,68094,6800.0%
SET_UPDATE91,64191,6410.0%
DICT_UPDATE37,76637,7660.0%
LOAD_LOCALS22,03622,0360.0%
WITH_EXCEPT_START16,50016,5000.0%
LOAD_FROM_DICT_OR_DEREF2,2002,2000.0%
DELETE_NAME1,5601,5600.0%
SETUP_ANNOTATIONS1,1221,1220.0%
FORMAT_WITH_SPEC2412410.0%
INSTRUMENTED_RETURN_CONST2402400.0%
INSTRUMENTED_JUMP_BACKWARD1601600.0%
CALL_INTRINSIC_280800.0%
LOAD_FROM_DICT_OR_GLOBALS330.0%
ENTER_EXECUTOR2,166,395,973
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
9,646,987,81086.8%1,345,573,05176.6%-86.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,419,357,83512.8%380,382,82621.7%-73.2%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
50,382,2970.5%29,478,7221.7%-41.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success991,27736.7%596,76934.8%-39.8%
Failure1,709,52263.3%1,119,08165.2%-34.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
true divide float17,7681.0%2,8880.3%-83.7%
add different types221,29812.9%48,0634.3%-78.3%
rshift37,4252.2%8,5650.8%-77.1%
xor29,5431.7%6,9030.6%-76.6%
lshift29,1071.7%8,4250.8%-71.1%
remainder66,7983.9%21,1341.9%-68.4%
multiply different types247,73914.5%83,6027.5%-66.3%
true divide different types30,4831.8%10,5630.9%-65.3%
power13,7660.8%5,6050.5%-59.3%
and other1,9570.1%8310.1%-57.5%
and int69,5284.1%30,3302.7%-56.4%
multiply other5,5600.3%2,5470.2%-54.2%
floor divide53,2823.1%31,8782.8%-40.2%
subtract other15,4820.9%10,0420.9%-35.1%
add other72,5474.2%49,4644.4%-31.8%
true divide other2,9630.2%2,4820.2%-16.2%
or15,8050.9%13,7301.2%-13.1%
subtract different types778,05045.5%781,60869.8%0.5%
and different types4210.0%4210.0%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
245,751,009100.0%113,063,766100.0%-54.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3,234,980,58833.5%551,793,17231.1%-82.9%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
6,420,777,52266.5%1,218,585,48168.6%-81.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
5,056,8940.1%4,826,6740.3%-4.6%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure887,12582.6%218,75254.6%-75.3%
Success186,47217.4%182,05145.4%-2.4%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
list slice251,77328.4%13,1716.0%-94.8%
array int212,90024.0%26,64012.2%-87.5%
other262,44629.6%65,57530.0%-75.0%
buffer int48,2395.4%21,6009.9%-55.2%
out of range75,3668.5%57,08626.1%-24.3%
buffer slice3,1400.4%2,6401.2%-15.9%
string slice9,3291.1%8,4293.9%-9.6%
tuple slice19,2722.2%18,9518.7%-1.7%
sequence int4,3000.5%4,3002.0%0.0%
code complex parameters3400.0%3400.2%0.0%
array slice200.0%200.0%0.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
12,982,296,91098.5%3,882,560,22396.4%-70.1%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
55,0600.0%32,4600.0%-41.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
201,607,6021.5%145,635,8903.6%-27.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
690,0700.0%690,0490.0%-0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success4,359,043100.0%3,301,791100.0%-24.3%
Failure3430.0%3430.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
init not inline values2,389696.5%2,389696.5%0.0%
init not simple2,003584.0%2,003584.0%0.0%
init not python761221.9%761221.9%0.0%
out of versions343100.0%343100.0%0.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
806,56092.5%750,96092.0%-6.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
35,7714.1%35,7714.4%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
688,480,68310.6%107,314,9869.2%-84.4%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
5,788,503,94489.3%1,058,829,94390.7%-81.7%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1,621,8720.0%1,329,8430.1%-18.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure321,33979.2%165,42067.7%-48.5%
Success84,49920.8%78,92132.3%-6.6%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
set9,7993.0%9600.6%-90.2%
tuple120,77637.6%12,2907.4%-89.8%
bool3,0791.0%1,2610.8%-59.0%
float long20,0676.2%11,1456.7%-44.5%
baseobject31,5699.8%21,80913.2%-30.9%
different types53,79516.7%41,50525.1%-22.8%
other20,2246.3%17,98910.9%-11.1%
bytes3,5401.1%3,1601.9%-10.7%
big int44,12013.7%41,39125.0%-6.2%
string11,0803.4%10,6806.5%-3.6%
list2,7600.9%2,7001.6%-2.2%
long float5300.2%5300.3%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
262,085,9379.6%39,522,7069.5%-84.9%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,477,807,09290.3%373,795,51589.7%-84.9%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
3,360,3200.1%3,360,2800.8%-0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure133,42363.7%74,36349.4%-44.3%
Success76,07936.3%76,07950.6%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
list39,89129.9%15,27020.5%-61.7%
str39,12229.3%15,52220.9%-60.3%
other23,52217.6%15,27720.5%-35.1%
tuple30,88823.2%28,29438.0%-8.4%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,388,571,40224.0%94,121,79916.3%-93.2%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
4,224,040,74173.0%455,572,65878.7%-89.2%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
173,510,1043.0%29,284,9895.1%-83.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success3,321,51186.7%600,37184.5%-81.9%
Failure509,66213.3%109,80115.5%-78.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
zip219,22843.0%7,6627.0%-96.5%
seq iter31,7406.2%5,8615.3%-81.5%
bytes2,5010.5%6030.5%-75.9%
enumerate45,4058.9%11,96210.9%-73.7%
other22,4254.4%6,6266.0%-70.5%
map2,2800.4%7400.7%-67.5%
dict items113,77422.3%37,79434.4%-66.8%
set29,0935.7%11,97810.9%-58.8%
ascii string6,2871.2%2,9272.7%-53.4%
callable5000.1%2800.3%-44.0%
reversed list6,1441.2%3,5533.2%-42.2%
dict values13,0562.6%7,7967.1%-40.3%
itertools10,0712.0%6,7166.1%-33.3%
dict keys7,1381.4%5,3034.8%-25.7%
string200.0%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
13,747,203,71888.2%4,432,602,77583.3%-67.8%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
2,553,3000.0%1,053,5800.0%-58.7%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
1,011,498,2226.5%479,989,1539.0%-52.5%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
824,728,6595.3%404,824,7707.6%-50.9%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success20,922,20197.4%10,714,20196.0%-48.8%
Failure556,2742.6%441,6564.0%-20.6%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
method105,01218.9%69,67415.8%-33.7%
overriding descriptor114,21220.5%76,79117.4%-32.8%
overridden17,6163.2%13,0042.9%-26.2%
metaclass attribute44,1787.9%33,7057.6%-23.7%
not managed dict3,2760.6%2,7550.6%-15.9%
builtin class method3,4840.6%2,9440.7%-15.5%
non overriding descriptor17,9163.2%15,3533.5%-14.3%
out of versions4200.1%3600.1%-14.3%
property1420.0%1220.0%-14.1%
class method obj37,6916.8%33,4957.6%-11.1%
mutable class158,54828.5%142,64832.3%-10.0%
expected error5,8401.0%5,3201.2%-8.9%
not in dict8200.1%7600.2%-7.3%
non object slot3,6850.7%3,5440.8%-3.8%
module attr not found5,6381.0%5,4641.2%-3.1%
class attr simple21,9023.9%21,4404.9%-2.1%
wrong number arguments1,1000.2%1,1000.2%0.0%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
11,140,299,95199.8%3,717,114,13999.4%-66.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
19,880,2490.2%19,880,2320.5%-0.0%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
9,2340.0%9,2340.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
415,7080.0%415,7080.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success450,355100.0%450,325100.0%-0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_SUPER_ATTR + +
+ specialization stats for LOAD_SUPER_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
70,329,178100.0%60,436,281100.0%-14.1%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6,0440.0%6,0430.0%-0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success5,961100.0%5,961100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### SEND + +
+ specialization stats for SEND family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
701,252,03982.9%185,410,50556.2%-73.6%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
44,8430.0%30,6630.0%-31.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
144,204,81917.1%144,164,11343.7%-0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success4,8978.7%4,6378.5%-5.3%
Failure51,31491.3%49,87491.5%-2.8%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
list11,46022.3%10,02020.1%-12.6%
async generator send33,18064.7%33,18066.5%0.0%
other4,4288.6%4,4288.9%0.0%
tuple2,2404.4%2,2404.5%0.0%
dict keys60.0%60.0%0.0%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,942,930,88990.6%920,157,15885.2%-52.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
44,975,7442.1%28,546,6652.6%-36.5%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
156,093,3987.3%131,144,94912.1%-16.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success3,033,95797.3%2,563,35097.1%-15.5%
Failure82,9502.7%77,9102.9%-6.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
overriding descriptor5,8837.1%3,2034.1%-45.6%
class attr simple35,00442.2%32,76442.1%-6.4%
method8441.0%8041.0%-4.7%
overridden4,5165.4%4,4365.7%-1.8%
not in dict15,42518.6%15,42519.8%0.0%
not managed dict9,83211.9%9,83212.6%0.0%
not in keys5,1816.2%5,1816.6%0.0%
property3,2253.9%3,2254.1%0.0%
split dict2,1802.6%2,1802.8%0.0%
no dict8001.0%8001.0%0.0%
mutable class600.1%600.1%0.0%
+ + +
+ +### STORE_SLICE + +
+ specialization stats for STORE_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
149,990,080100.0%140,540100.0%-99.9%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
906,120,82550.7%105,490,43538.3%-88.4%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
880,384,31549.3%169,937,70361.7%-80.7%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
2,9000.0%2,9000.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure270,71195.4%71,90784.5%-73.4%
Success13,1704.6%13,16815.5%-0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other108,78040.2%6600.9%-99.4%
bytearray int9,6603.6%1,6002.2%-83.4%
array int70,48026.0%14,24019.8%-79.8%
dict subclass no override30,26511.2%6,8819.6%-77.3%
out of range3,2001.2%1,5402.1%-51.9%
array slice1600.1%800.1%-50.0%
py simple43,68316.1%42,52359.1%-2.7%
list slice4,4801.7%4,3806.1%-2.2%
buffer slice30.0%30.0%0.0%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
153,284,2432.8%27,563,3701.6%-82.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
5,106,433,72891.8%1,615,554,51091.0%-68.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
301,355,3965.4%132,604,2697.5%-56.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success3,074,54082.8%702,65875.5%-77.1%
Failure638,45317.2%228,40524.5%-64.2%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other173,94727.2%6,2352.7%-96.4%
mapping96,61815.1%14,8476.5%-84.6%
number174,63427.4%59,88126.2%-65.7%
sequence12,7822.0%7,1243.1%-44.3%
bytearray9430.1%5830.3%-38.2%
dict27,2264.3%16,9067.4%-37.9%
bytes28,1074.4%19,0308.3%-32.3%
tuple103,30616.2%83,43336.5%-19.2%
memory view4200.1%3400.1%-19.0%
float1,7490.3%1,4690.6%-16.0%
set18,7212.9%18,5578.1%-0.9%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
1,745,3050.1%198,4570.0%-88.6%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
2,972,2400.1%434,4400.1%-85.4%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
2,085,944,57499.8%676,765,59199.9%-67.6%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success94,43997.4%46,41596.3%-50.9%
Failure2,5062.6%1,7633.7%-29.6%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
sequence1,85774.1%1,11663.3%-39.9%
iterator26910.7%26715.1%-0.7%
other38015.2%38021.6%0.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
9,641,575,4273.8%2,128,610,3042.9%-77.9%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
86,213,081,96434.4%24,503,639,62333.0%-71.6%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
152,957,363,03861.0%46,858,831,21763.0%-69.4%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
1,760,714,1560.7%854,349,9611.1%-51.5%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
FOR_ITER1,388,571,40214.4%94,121,7994.4%-93.2%
STORE_SUBSCR906,120,8259.4%105,490,4355.0%-88.4%
CONTAINS_OP262,085,9372.7%39,522,7061.9%-84.9%
COMPARE_OP688,480,6837.1%107,314,9865.1%-84.4%
BINARY_SUBSCR3,234,980,58833.6%551,793,17226.0%-82.9%
BINARY_OP1,419,357,83514.7%380,382,82617.9%-73.2%
TO_BOOL301,355,3963.1%132,604,2696.2%-56.0%
BINARY_SLICE245,751,0092.6%113,063,7665.3%-54.0%
LOAD_ATTR824,728,6598.6%404,824,77019.1%-50.9%
STORE_SLICE149,990,0801.6%
SEND144,164,1136.8%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
FOR_ITER_TUPLE86,476,9574.9%14,627,9491.7%-83.1%
LOAD_ATTR_SLOT114,720,8316.5%46,281,4975.4%-59.7%
LOAD_ATTR_INSTANCE_VALUE433,869,72824.6%185,788,74121.7%-57.2%
LOAD_ATTR_METHOD_WITH_VALUES309,174,17317.6%139,990,17516.4%-54.7%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES90,033,8315.1%66,550,7117.8%-26.1%
CALL_PY_EXACT_ARGS116,885,3146.6%90,250,28810.6%-22.8%
STORE_ATTR_INSTANCE_VALUE136,437,0047.7%119,726,56414.0%-12.2%
FOR_ITER_LIST86,857,3224.9%
TO_BOOL_ALWAYS_TRUE72,381,0294.1%
TO_BOOL_NONE71,345,0264.1%
CALL_METHOD_DESCRIPTOR_FAST21,077,1392.5%
BINARY_OP_SUBTRACT_FLOAT20,177,2402.4%
CALL_BOUND_METHOD_EXACT_ARGS15,960,7001.9%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls via PyEval_EvalFrame (method)49,434,0160.6%38,875,6190.5%-21.4%
Calls via PyEval_EvalFrame (legacy)5,298,3720.1%4,418,2920.1%-16.6%
Frame objects created89,299,9151.1%84,692,6751.1%-5.2%
Calls to Python functions inlined5,930,725,45975.8%5,696,729,90175.4%-3.9%
Frames pushed6,150,199,65278.6%5,915,981,40878.3%-3.8%
Calls via PyEval_EvalFrame (vector)1,042,783,13413.3%1,020,629,80613.5%-2.1%
Calls via PyEval_EvalFrame (function vectorcall)1,037,454,63313.3%1,016,181,38513.4%-2.1%
Calls to PyEval_EvalDefault1,891,719,61224.2%1,861,061,10024.6%-1.6%
Calls via PyEval_EvalFrame (total)1,891,719,61224.2%1,861,061,10024.6%-1.6%
Calls via PyEval_EvalFrame (api)344,524,6424.4%339,955,2734.5%-1.3%
Calls via PyEval_EvalFrame (generator)848,936,47810.9%840,431,29411.1%-1.0%
Calls via PyEval_EvalFrame (function ex)28,843,2330.4%28,626,1510.4%-0.8%
Calls via PyEval_EvalFrame (slot)206,100,5772.6%205,076,6182.7%-0.5%
Calls via PyEval_EvalFrame (build class)30,1290.0%30,1290.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache dunder misses9,142,45412,634,29938.2%
Materialize dict (on request)5,016,4602.4%3,378,0601.6%-32.7%
Interpreter immortal increfs56,651,650,14426.7%41,387,995,94920.6%-26.9%
Method cache misses63,755,35452,717,490-17.3%
Method cache hits2,473,341,8792,134,732,451-13.7%
Method cache collisions71,917,64264,374,124-10.5%
Interpreter mortal increfs91,677,232,05543.3%97,960,816,30948.7%6.9%
Interpreter mortal decrefs102,738,218,66443.4%108,211,188,45644.7%5.3%
Immortal increfs33,986,405,20316.0%32,998,514,79916.4%-2.9%
Allocations from freelist10,789,836,44046.5%10,491,140,59146.3%-2.8%
Frees to freelist10,790,909,16910,492,220,651-2.8%
Mortal increfs29,500,812,63513.9%28,745,952,94514.3%-2.6%
Interpreter immortal decrefs62,444,904,01326.4%63,755,615,92126.3%2.1%
Immortal decrefs31,929,118,45213.5%31,316,660,98812.9%-1.9%
Allocations to 512 bytes12,281,920,84653.0%12,058,600,83153.2%-1.8%
Allocations12,404,478,77453.5%12,181,698,45353.7%-1.8%
Method cache dunder hits3,575,346,6063,511,291,365-1.8%
Frees13,223,170,88212,995,906,446-1.7%
Mortal decrefs39,508,843,42616.7%39,060,201,58516.1%-1.1%
Inline values212,097,366210,268,232-0.9%
Allocations to 4 kbytes99,852,4790.4%100,393,7100.4%0.5%
Allocations over 4 kbytes22,705,4490.1%22,703,9120.1%-0.0%
Materialize dict (new key)200,9200.1%200,9200.1%0.0%
Materialize dict (too big)16,2430.0%16,2430.0%0.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
1288,902114,478,7138,150,052,919287,303114,532,5738,116,229,895
230,72021,511,68014,023,702,56030,72021,511,68014,025,922,760
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
2402400.0%
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
4004000.0%
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
01,2601,260 / 0 !!
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
01,2601,260 / 0 !!
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files1,7811,7810.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-xml_etree-vs-base.md b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-xml_etree-vs-base.md new file mode 100644 index 00000000..75dd45dd --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d-PYTHON_UOPS/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-pystats-xml_etree-vs-base.md @@ -0,0 +1,3547 @@ +## Execution counts + +
+ Execution counts for Tier 1 instructions. + + +The "miss ratio" column shows the percentage of times the instruction +executed that it deoptimized. When this happens, the base unspecialized +instruction is not counted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountHead CountChange
EXTENDED_ARG26,098,4204,640-100.0%
LIST_APPEND16,333,9203,520-100.0%
JUMP_BACKWARD83,868,00025,760-100.0%
CONTAINS_OP_DICT14,749,92013,600-99.9%
CALL_LIST_APPEND1,634,5002,160-99.9%
BINARY_OP5,660,7807,660-99.9%
CALL_ISINSTANCE62,284,10090,300-99.9%
FOR_ITER_RANGE5,775,0608,920-99.8%
BUILD_TUPLE21,971,88034,240-99.8%
UNPACK_SEQUENCE_TWO_TUPLE19,740,64031,500-99.8%
STORE_FAST_STORE_FAST19,742,00032,860-99.8%
TO_BOOL_BOOL62,307,040110,060-99.8%
FOR_ITER68,078,320128,360-99.8%
CALL_METHOD_DESCRIPTOR_NOARGS42,445,38088,960-99.8%
FOR_ITER_LIST18,213,30039,020-99.8%
LOAD_GLOBAL_BUILTIN106,686,160239,000-99.8%
TO_BOOL16,396,68044,620-99.7%
TO_BOOL_STR25,705,72073,820-99.7%
LOAD_ATTR_METHOD_NO_DICT44,243,000130,420-99.7%
JUMP_FORWARD26,106,50083,560-99.7%
FOR_ITER_GEN3,448,22012,100-99.6%
POP_JUMP_IF_FALSE196,336,260732,060-99.6%
IS_OP29,556,580122,220-99.6%
CALL_KW_PY13,051,36055,760-99.6%
CONTAINS_OP50,489,060222,540-99.6%
TO_BOOL_LIST13,048,16058,300-99.6%
BINARY_OP_ADD_UNICODE39,145,540184,800-99.5%
CALL_BUILTIN_O53,702,260255,740-99.5%
CALL_BUILTIN_CLASS13,107,80063,060-99.5%
BINARY_SUBSCR_DICT14,788,18084,200-99.4%
GET_ITER27,976,120166,500-99.4%
CALL_NON_PY_GENERAL7,444,08049,360-99.3%
POP_JUMP_IF_NOT_NONE13,116,26093,140-99.3%
NOP14,753,400113,620-99.2%
FORMAT_SIMPLE3,404,16027,160-99.2%
CONVERT_VALUE3,404,16027,160-99.2%
POP_JUMP_IF_TRUE44,702,120357,300-99.2%
BUILD_STRING1,702,40013,740-99.2%
RETURN_VALUE14,660,880130,020-99.1%
TO_BOOL_NONE26,662,940255,520-99.0%
LOAD_DEREF16,898,360202,300-98.8%
CALL_BUILTIN_FAST1,667,86025,460-98.5%
STORE_FAST144,507,5802,252,800-98.4%
PUSH_NULL62,873,6401,125,720-98.2%
LOAD_FAST_LOAD_FAST54,941,0601,005,140-98.2%
LOAD_ATTR89,880,3602,742,780-96.9%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS32,9601,240-96.2%
LOAD_FAST584,336,34026,086,240-95.5%
LOAD_CONST179,192,06013,823,220-92.3%
STORE_ATTR8,862,820814,460-90.8%
CALL_STR_117,5801,720-90.2%
LOAD_GLOBAL_MODULE107,840,02010,950,040-89.8%
STORE_SUBSCR_DICT128,72014,980-88.4%
BINARY_SUBSCR168,12028,040-83.3%
COPY_FREE_VARS160,24029,820-81.4%
CALL_LEN217,50041,000-81.1%
TO_BOOL_INT197,28038,360-80.6%
COMPARE_OP_STR3,567,420938,760-73.7%
CALL_PY_EXACT_ARGS35,914,80010,691,120-70.2%
GET_YIELD_FROM_ITER38,08012,940-66.0%
RETURN_GENERATOR64,40022,260-65.4%
POP_TOP115,290,44044,535,260-61.4%
STORE_FAST_LOAD_FAST4,3201,760-59.3%
BINARY_OP_MULTIPLY_FLOAT3,1201,440-53.8%
BINARY_SUBSCR_STR_INT3,2001,520-52.5%
CALL_KW_NON_PY1,665,800810,920-51.3%
END_FOR20,80010,400-50.0%
CLEANUP_THROW640320-50.0%
LOAD_ATTR_CLASS21,117,20010,558,640-50.0%
STORE_ATTR_INSTANCE_VALUE21,169,24010,598,200-49.9%
CALL_ALLOC_AND_ENTER_INIT23,96012,020-49.8%
SEND37,38018,800-49.7%
FOR_ITER_TUPLE3,8402,080-45.8%
BUILD_LIST25,16014,560-42.1%
EXIT_INIT_CHECK23,96014,040-41.4%
DELETE_SUBSCR400240-40.0%
RESUME_CHECK139,657,74086,647,360-38.0%
LOAD_ATTR_METHOD_WITH_VALUES48,84032,180-34.1%
STORE_SUBSCR580400-31.0%
COMPARE_OP_INT4,6203,220-30.3%
RETURN_CONST81,603,20057,898,980-29.0%
LOAD_FAST_AND_CLEAR4,0802,960-27.5%
LOAD_ATTR_INSTANCE_VALUE82,66061,840-25.2%
END_SEND37,44028,320-24.4%
CALL_PY_GENERAL17,86013,880-22.3%
LOAD_BUILD_CLASS2,0801,640-21.2%
STORE_DEREF15,78012,460-21.0%
MAKE_CELL24,84020,240-18.5%
LOAD_ATTR_MODULE37,66030,760-18.3%
SWAP19,76016,320-17.4%
MAKE_FUNCTION16,32013,680-16.2%
INTERPRETER_EXIT70,911,40059,523,080-16.1%
SET_FUNCTION_ATTRIBUTE13,30011,300-15.0%
CALL_INTRINSIC_12,9602,520-14.9%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK2,1601,840-14.8%
DELETE_ATTR6,7205,760-14.3%
BUILD_MAP12,88011,120-13.7%
RERAISE880760-13.6%
LIST_EXTEND2,4002,080-13.3%
CALL_TYPE_12,4002,080-13.3%
BINARY_SUBSCR_TUPLE_INT2,5002,180-12.8%
LOAD_SPECIAL10,4009,120-12.3%
CALL_FUNCTION_EX10,4809,200-12.2%
DICT_MERGE7,9206,960-12.1%
CALL_BUILTIN_FAST_WITH_KEYWORDS9,9808,780-12.0%
COPY9,2408,280-10.4%
CHECK_EXC_MATCH3,4603,140-9.2%
POP_EXCEPT3,4603,140-9.2%
PUSH_EXC_INFO3,4603,140-9.2%
YIELD_VALUE43,422,32040,899,440-5.8%
POP_JUMP_IF_NONE3,4803,320-4.6%
CALL_METHOD_DESCRIPTOR_FAST23,84022,960-3.7%
CALL_METHOD_DESCRIPTOR_O24,20023,400-3.3%
COMPARE_OP5,0404,940-2.0%
LOAD_ATTR_METHOD_LAZY_DICT23,60023,280-1.4%
SEND_GEN16,348,76016,333,060-0.1%
JUMP_BACKWARD_NO_INTERRUPT16,348,08016,336,920-0.1%
CALL22,86022,8600.0%
LOAD_GLOBAL20,98020,9800.0%
STORE_NAME16,08016,0800.0%
RESUME4,9404,9400.0%
LOAD_LOCALS3,3603,3600.0%
LOAD_NAME3,1203,1200.0%
CALL_KW1,8601,8600.0%
LOAD_FROM_DICT_OR_DEREF1,6001,6000.0%
LOAD_SUPER_ATTR_ATTR1,6001,6000.0%
UNPACK_SEQUENCE1,2801,2800.0%
LOAD_ATTR_SLOT1,1201,1200.0%
LOAD_FAST_CHECK9009000.0%
LOAD_ATTR_PROPERTY6406400.0%
CALL_BOUND_METHOD_EXACT_ARGS4804800.0%
BINARY_OP_INPLACE_ADD_UNICODE4004000.0%
CONTAINS_OP_SET4004000.0%
UNPACK_SEQUENCE_TUPLE4004000.0%
BINARY_SLICE3203200.0%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES3203200.0%
LOAD_SUPER_ATTR_METHOD3203200.0%
RAISE_VARARGS2402400.0%
BINARY_OP_SUBTRACT_FLOAT2402400.0%
BINARY_SUBSCR_GETITEM2402400.0%
STORE_GLOBAL1601600.0%
BINARY_OP_ADD_INT1601600.0%
BINARY_SUBSCR_LIST_INT1601600.0%
IMPORT_NAME80800.0%
LOAD_SUPER_ATTR80800.0%
CALL_TUPLE_180800.0%
COMPARE_OP_FLOAT80800.0%
STORE_ATTR_SLOT80800.0%
BINARY_OP_MULTIPLY_INT60600.0%
ENTER_EXECUTOR34,592,420
+ + +
+ +## Pair counts + +
+ Pair counts for top 100 opcode pairs + + +Pairs of specialized operations that deoptimize and are then followed by +the corresponding unspecialized instruction are not counted as pairs. + +Not included in comparative output. + + +
+ +## Predecessor/Successor Pairs + +
+ Top 5 predecessors and successors of each Tier 1 opcode. + + +This does not include the unspecialized instructions that occur after a +specialized instruction deoptimizes. + +Not included in comparative output. + + +
+ +## Specialization stats + +
+ Specialization stats by family + +### BINARY_OP + +
+ specialization stats for BINARY_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
5,657,38012.6%6,3403.3%-99.9%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
39,149,52087.4%187,10096.1%-99.5%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure2,82082.9%74056.1%-73.8%
Success58017.1%58043.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
remainder2,66094.3%58078.4%-78.2%
add different types1605.7%16021.6%0.0%
+ + +
+ +### BINARY_SLICE + +
+ specialization stats for BINARY_SLICE family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
320100.0%320100.0%0.0%
+ + +
+ +### BINARY_SUBSCR + +
+ specialization stats for BINARY_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
14,794,28098.9%88,30075.9%-99.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
166,1801.1%26,50022.8%-84.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure1,34069.1%94061.0%-29.9%
Success60030.9%60039.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other16011.9%606.4%-62.5%
buffer int18013.4%12012.8%-33.3%
string slice1,00074.6%76080.9%-24.0%
+ + +
+ +### CALL + +
+ specialization stats for CALL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
211,088,960100.0%11,322,22099.7%-94.6%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
21,2000.0%8,8200.1%-58.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
12,2000.0%12,2000.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success11,920100.0%11,700100.0%-1.8%
Failure00.0%00.0%
+ + +
+ +### CALL_KW + +
+ specialization stats for CALL_KW family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
96051.6%96051.6%0.0%
+ + +
+ +### COMPARE_OP + +
+ specialization stats for COMPARE_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
3,572,06099.9%942,00099.5%-73.6%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
3,4400.1%3,3600.4%-2.3%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
600.0%600.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure32020.0%30019.0%-6.2%
Success1,28080.0%1,28081.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
bytes6018.8%4013.3%-33.3%
different types24075.0%24080.0%0.0%
list206.2%206.7%0.0%
+ + +
+ +### CONTAINS_OP + +
+ specialization stats for CONTAINS_OP family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
14,750,32022.6%14,0005.9%-99.9%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
50,469,16077.4%216,98091.7%-99.6%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure19,74099.2%5,40097.1%-72.6%
Success1600.8%1602.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
str19,24097.5%5,00092.6%-74.0%
other2401.2%1603.0%-33.3%
tuple2601.3%2404.4%-7.7%
+ + +
+ +### FOR_ITER + +
+ specialization stats for FOR_ITER family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
68,056,10071.2%124,78065.5%-99.8%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
27,439,78028.7%61,80032.4%-99.8%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
6400.0%3200.2%-50.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure21,26095.7%2,62073.2%-87.7%
Success9604.3%96026.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other12,24057.6%1,06040.5%-91.3%
seq iter8,62040.5%1,18045.0%-86.3%
itertools3201.5%2409.2%-25.0%
dict items800.4%602.3%-25.0%
ascii string803.1%
+ + +
+ +### LOAD_ATTR + +
+ specialization stats for LOAD_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
89,846,26057.8%2,731,40020.1%-97.0%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
65,546,54042.2%10,830,38079.7%-83.5%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
10,6600.0%10,6600.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure28,40082.9%5,68049.2%-80.0%
Success5,86017.1%5,86050.8%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
overriding descriptor27,32096.2%4,66082.0%-82.9%
method8403.0%80014.1%-4.8%
+ + +
+ +### LOAD_GLOBAL + +
+ specialization stats for LOAD_GLOBAL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
214,516,620100.0%11,179,48099.7%-94.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
11,1400.0%11,1400.1%0.0%
+deopt +
+ⓘ + +Specialized instructions that deopt. +
+
5000.0%5000.0%0.0%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
9,5600.0%9,5600.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success9,840100.0%9,840100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### LOAD_SUPER_ATTR + +
+ specialization stats for LOAD_SUPER_ATTR family + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
1,92096.0%1,92096.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success80100.0%80100.0%0.0%
Failure00.0%00.0%
+ + +
+ +### SEND + +
+ specialization stats for SEND family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
37,1600.2%18,6000.1%-49.9%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
16,348,76099.8%16,333,06099.9%-0.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure18081.8%16080.0%-11.1%
Success4018.2%4020.0%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
list180100.0%160100.0%-11.1%
+ + +
+ +### STORE_ATTR + +
+ specialization stats for STORE_ATTR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
8,857,72029.5%811,9807.1%-90.8%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
21,163,28070.5%10,592,24092.8%-49.9%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
6,0400.0%6,0400.1%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure4,16081.2%1,54061.6%-63.0%
Success96018.8%96038.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
overriding descriptor3,56085.6%98063.6%-72.5%
not managed dict2405.8%22014.3%-8.3%
class attr simple2606.2%24015.6%-7.7%
not in keys1002.4%1006.5%0.0%
+ + +
+ +### STORE_SUBSCR + +
+ specialization stats for STORE_SUBSCR family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
128,72099.6%14,98097.4%-88.4%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
4200.3%2601.7%-38.1%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure6037.5%4028.6%-33.3%
Success10062.5%10071.4%0.0%
+ + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
other60100.0%40100.0%-33.3%
+ + +
+ +### TO_BOOL + +
+ specialization stats for TO_BOOL family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
16,389,02011.4%41,0607.1%-99.7%
+hit +
+ⓘ + +Specialized instructions that complete. +
+
127,508,76088.4%469,92080.9%-99.6%
+miss +
+ⓘ + +Specialized instructions that deopt. +
+
412,3800.3%66,14011.4%-84.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Failure4,80031.2%70015.0%-85.4%
Success10,58068.8%3,98085.0%-62.4%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Failure kindBase CountBase RatioHead CountHead RatioChange
sequence4,48093.3%38054.3%-91.5%
bytes3206.7%32045.7%0.0%
+ + +
+ +### UNPACK_SEQUENCE + +
+ specialization stats for UNPACK_SEQUENCE family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KindBase CountBase RatioHead CountHead RatioChange
+hit +
+ⓘ + +Specialized instructions that complete. +
+
19,741,040100.0%31,90096.1%-99.8%
+deferred +
+ⓘ + +Lists the number of "deferred" (i.e. not specialized) instructions executed. +
+
6400.0%6401.9%0.0%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SuccessBase CountBase RatioHead CountHead RatioChange
Success640100.0%640100.0%0.0%
Failure00.0%00.0%
+ + +
+ + +
+ +## Specialization effectiveness + +
+ specialization effectiveness + + +All entries are execution counts. Should add up to the total number of +Tier 1 instructions executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InstructionsBase CountBase RatioHead CountHead RatioChange
+Not specialized +
+ⓘ + +Instructions that could be specialized but aren't, e.g. `LOAD_ATTR`, `BINARY_SLICE`. +
+
239,626,5207.7%4,059,9800.9%-98.3%
+Basic +
+ⓘ + +Instructions that are not and cannot be specialized, e.g. `LOAD_FAST`. +
+
1,914,637,36061.9%300,561,30066.1%-84.3%
+Specialized hits +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that complete. +
+
937,586,92030.3%149,645,90032.9%-84.0%
+Specialized misses +
+ⓘ + +Specialized instructions, e.g. `LOAD_ATTR_MODULE` that deopt. +
+
460,5400.0%101,8000.0%-77.9%
+ +### Deferred by instruction + +
+ Breakdown of deferred (not specialized) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
BINARY_OP5,657,3802.4%6,3400.2%-99.9%
FOR_ITER68,056,10028.4%124,7803.1%-99.8%
TO_BOOL16,389,0206.8%41,0601.0%-99.7%
CONTAINS_OP50,469,16021.1%216,9805.4%-99.6%
LOAD_ATTR89,846,26037.5%2,731,40068.2%-97.0%
STORE_ATTR8,857,7203.7%811,98020.3%-90.8%
BINARY_SUBSCR166,1800.1%26,5000.7%-84.1%
SEND37,1600.0%18,6000.5%-49.9%
CALL12,2000.0%12,2000.3%0.0%
LOAD_GLOBAL11,1400.0%11,1400.3%0.0%
+ + +
+ +### Misses by instruction + +
+ Breakdown of misses (specialized deopts) instruction counts by family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameBase CountBase RatioHead CountHead RatioChange
TO_BOOL_STR203,56044.2%29,68029.1%-85.4%
TO_BOOL_NONE208,82045.3%36,46035.7%-82.5%
CALL_PY_EXACT_ARGS19,8604.3%7,6407.5%-61.5%
FOR_ITER_GEN6400.1%3200.3%-50.0%
CALL_METHOD_DESCRIPTOR_NOARGS6200.1%4600.5%-25.8%
LOAD_ATTR_METHOD_LAZY_DICT9,3602.0%9,3609.2%0.0%
STORE_ATTR_INSTANCE_VALUE6,0401.3%6,0405.9%0.0%
LOAD_GLOBAL_MODULE5,7601.3%5,7605.6%0.0%
LOAD_GLOBAL_BUILTIN3,8000.8%3,8003.7%0.0%
LOAD_ATTR_MODULE1,3000.3%1,3001.3%0.0%
+ + +
+ + +
+ +## Call stats + +
+ Inlined calls and frame stats + + +This shows what fraction of calls to Python functions are inlined (i.e. +not having a call at the C level) and for those that are not, where the +call comes from. The various categories overlap. + +Also includes the count of frame objects created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Calls via PyEval_EvalFrame (api)22,9200.0%13,3200.0%-41.9%
Frames pushed96,265,92068.9%69,391,76062.9%-27.9%
Calls to Python functions inlined68,815,68049.2%50,797,36046.0%-26.2%
Calls via PyEval_EvalFrame (function vectorcall)47,220,50033.8%36,650,74033.2%-22.4%
Calls via PyEval_EvalFrame (vector)47,222,66033.8%36,652,90033.2%-22.4%
Calls via PyEval_EvalFrame (method)47,181,12033.8%36,622,88033.2%-22.4%
Frame objects created4,6600.0%3,9000.0%-16.3%
Calls to PyEval_EvalDefault70,912,04050.8%59,523,60054.0%-16.1%
Calls via PyEval_EvalFrame (total)70,912,04050.8%59,523,60054.0%-16.1%
Calls via PyEval_EvalFrame (function ex)6,8000.0%5,8400.0%-14.1%
Calls via PyEval_EvalFrame (generator)23,689,38017.0%22,870,70020.7%-3.5%
Calls via PyEval_EvalFrame (legacy)800.0%800.0%0.0%
Calls via PyEval_EvalFrame (build class)2,0800.0%2,0800.0%0.0%
Calls via PyEval_EvalFrame (slot)4000.0%4000.0%0.0%
+ + +
+ +## Object stats + +
+ Allocations, frees and dict materializatons + + +Below, "allocations" means "allocations that are not from a freelist". +Total allocations = "Allocations from freelist" + "Allocations". + +"Inline values" is the number of values arrays inlined into objects. + +The cache hit/miss numbers are for the MRO cache, split into dunder and +other names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Base CountBase RatioHead CountHead RatioChange
Method cache collisions2,562,33476,998-97.0%
Method cache misses2,570,79580,377-96.9%
Interpreter immortal increfs379,693,28011.6%172,550,4006.4%-54.6%
Inline values36,40025,200-30.8%
Method cache hits190,883,065154,242,583-19.2%
Allocations from freelist93,669,86026.4%79,009,24025.4%-15.7%
Interpreter mortal decrefs1,411,431,52039.2%1,190,627,36037.8%-15.6%
Frees to freelist93,722,60079,061,980-15.6%
Immortal increfs664,865,19520.3%566,151,06221.1%-14.8%
Immortal decrefs668,807,58518.6%574,983,26518.3%-14.0%
Interpreter mortal increfs1,130,368,06034.5%972,654,48036.3%-14.0%
Method cache dunder hits65,655,65757,532,716-12.4%
Mortal increfs1,102,689,34533.6%970,297,26236.2%-12.0%
Allocations over 4 kbytes92,8800.0%82,5000.0%-11.2%
Allocations to 512 bytes260,574,30073.5%231,954,50074.5%-11.0%
Allocations260,796,52073.6%232,169,50074.6%-11.0%
Frees262,074,703233,455,630-10.9%
Mortal decrefs1,163,198,85932.3%1,055,493,78133.5%-9.3%
Interpreter immortal decrefs357,814,8009.9%328,043,84010.4%-8.3%
Method cache dunder misses9,9439,464-4.8%
Allocations to 4 kbytes129,3400.0%132,5000.0%2.4%
Materialize dict (on request)00.0%00.0%
Materialize dict (new key)00.0%00.0%
Materialize dict (too big)00.0%00.0%
Materialize dict (str subclass)00.0%00.0%
+ + +
+ +## GC stats + +
+ GC collections and effectiveness + + +Collected/visits gives some measure of efficiency. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GenerationBase CollectionsBase Objects collectedBase Object visitsHead CollectionsHead Objects collectedHead Object visits
0000000
116,16045,880621,844,00015,04045,880602,013,380
2000000
+ + +
+ +## Optimization (Tier 2) stats + +
+ statistics about the Tier 2 optimizer + + +
+ +## Rare events + +
+ Counts of rare/unlikely events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EventBase CountHead CountChange
+set class +
+ⓘ + +Setting an object's class, `obj.__class__ = ...` +
+
00
+set bases +
+ⓘ + +Setting the bases of a class, `cls.__bases__ = ...` +
+
00
+set eval frame func +
+ⓘ + +Setting the PEP 523 frame eval function `_PyInterpreterState_SetFrameEvalFunc()` +
+
00
+builtin dict +
+ⓘ + +Modifying the builtins, `__builtins__.__dict__[var] = ...` +
+
00
+func modification +
+ⓘ + +Modifying a function, e.g. `func.__defaults__ = ...`, etc. +
+
00
+watched dict modification +
+ⓘ + +A watched dict has been modified +
+
00
+watched globals modification +
+ⓘ + +A watched `globals()` dict has been modified +
+
00
+ + +
+ +## Meta stats + +
+ Meta statistics + + + + + + + + + + + + + + + + + + +
Base CountHead CountChange
Number of data files80800.0%
+ + +
+ +--- +Stats gathered on: 2024-10-20 diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d/README.md b/results/bm-20241019-3.14.0a1+-8f5e39d/README.md new file mode 100644 index 00000000..04328a1a --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d/README.md @@ -0,0 +1,35 @@ +# Results + +- fork: python +- version: 3.14.0a1+ +- config: +- commit hash: [8f5e39d](https://github.com/python/cpython/commit/8f5e39d) +- commit date: 2024-10-19T17:46:57-04:00 +- commit merge base: [4c53b2577531c77193430cdcd66ad6385fcda81f](https://github.com/python/cpython/commit/4c53b2577531c77193430cdcd66ad6385fcda81f) +- ref: 8f5e39d5c885318e3128 + +## linux x86_64 (vultr) + +- [GitHub Action run](https://github.com/facebookexperimental/free-threading-benchmarking/actions/runs/11421789318) +- cpu model: Intel(R) Xeon(R) E-2286G CPU @ 4.00GHz +- platform: Linux-6.8.0-45-generic-x86_64-with-glibc2.39 +- [pystats raw](bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-pystats.json) +- [pystats table](bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-pystats.md) +- [raw results](bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d.json) + +### vs. 3.12.6 + +- Geometric mean: 1.01x slower (HPT: reliability of 91.25%, 1.00x faster at 99th %ile) +- Memory usage: 1.02x +- missing benchmarks: aiohttp, async_tree_cpu_io_mixed, async_tree_cpu_io_mixed_tg, async_tree_io, async_tree_io_tg, async_tree_memoization, async_tree_memoization_tg, async_tree_none, async_tree_none_tg, chameleon, dask, flaskblogging, gunicorn, mypy2, sqlalchemy_declarative, sqlalchemy_imperative +- [📄table](bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-3.12.6.md) +- [📈time plot](bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-3.12.6.svg) + +### vs. 3.13.0rc2 + +- Geometric mean: 1.02x slower (HPT: reliability of 95.02%, 1.00x slower at 99th %ile) +- Memory usage: 1.00x +- missing benchmarks: aiohttp, async_tree_cpu_io_mixed, async_tree_cpu_io_mixed_tg, async_tree_io, async_tree_io_tg, async_tree_memoization, async_tree_memoization_tg, async_tree_none, async_tree_none_tg, chameleon, dask, flaskblogging, gunicorn +- [📄table](bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-3.13.0rc2.md) +- [📈time plot](bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1%2B-8f5e39d-vs-3.13.0rc2.svg) + diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.12.6.md b/results/bm-20241019-3.14.0a1+-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.12.6.md new file mode 100644 index 00000000..3c973c5e --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.12.6.md @@ -0,0 +1,202 @@ +# Results vs. 3.12.6 + +- fork: python +- ref: 8f5e39d5c885318e3128 +- machine: linux-x86_64 +- commit hash: 8f5e39d +- commit date: 2024-10-19 +- overall geometric mean: 1.01x slower +- HPT reliability: 91.25% +- HPT 99th percentile: 1.00x faster +- Memory change: 1.02x + +Benchmarks with tag 'apps': +=========================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.12.6-3.12.6-a4a2d2b | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|----------------|:------------------------------------------------------:|:----------------------------------------------------------------------:| +| 2to3 | 264 ms | 252 ms: 1.04x faster | +| docutils | 2.64 sec | 2.62 sec: 1.01x faster | +| html5lib | 63.6 ms | 66.2 ms: 1.04x slower | +| tornado_http | 119 ms | 113 ms: 1.05x faster | +| Geometric mean | (ref) | 1.02x faster | + +Benchmarks with tag 'asyncio': +============================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.12.6-3.12.6-a4a2d2b | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|--------------------|:------------------------------------------------------:|:----------------------------------------------------------------------:| +| coroutines | 23.9 ms | 22.6 ms: 1.06x faster | +| asyncio_tcp | 519 ms | 503 ms: 1.03x faster | +| async_generators | 384 ms | 376 ms: 1.02x faster | +| asyncio_websockets | 517 ms | 520 ms: 1.01x slower | +| asyncio_tcp_ssl | 1.51 sec | 1.52 sec: 1.01x slower | +| Geometric mean | (ref) | 1.02x faster | + +Benchmarks with tag 'math': +=========================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.12.6-3.12.6-a4a2d2b | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|----------------|:------------------------------------------------------:|:----------------------------------------------------------------------:| +| float | 80.8 ms | 79.0 ms: 1.02x faster | +| nbody | 89.3 ms | 94.0 ms: 1.05x slower | +| pidigits | 184 ms | 217 ms: 1.18x slower | +| Geometric mean | (ref) | 1.07x slower | + +Benchmarks with tag 'regex': +============================ + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.12.6-3.12.6-a4a2d2b | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|----------------|:------------------------------------------------------:|:----------------------------------------------------------------------:| +| regex_compile | 142 ms | 131 ms: 1.09x faster | +| regex_effbot | 3.17 ms | 3.27 ms: 1.03x slower | +| regex_dna | 168 ms | 179 ms: 1.07x slower | +| regex_v8 | 20.6 ms | 23.7 ms: 1.15x slower | +| Geometric mean | (ref) | 1.04x slower | + +Benchmarks with tag 'serialize': +================================ + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.12.6-3.12.6-a4a2d2b | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|----------------------|:------------------------------------------------------:|:----------------------------------------------------------------------:| +| unpickle | 14.1 us | 13.7 us: 1.03x faster | +| json_loads | 26.5 us | 26.1 us: 1.02x faster | +| unpickle_pure_python | 221 us | 217 us: 1.02x faster | +| xml_etree_parse | 139 ms | 137 ms: 1.01x faster | +| xml_etree_iterparse | 96.7 ms | 96.2 ms: 1.01x faster | +| xml_etree_generate | 85.2 ms | 85.6 ms: 1.00x slower | +| tomli_loads | 2.11 sec | 2.12 sec: 1.00x slower | +| xml_etree_process | 59.0 ms | 59.6 ms: 1.01x slower | +| pickle_pure_python | 308 us | 312 us: 1.01x slower | +| pickle_list | 4.77 us | 4.91 us: 1.03x slower | +| pickle | 10.9 us | 11.3 us: 1.03x slower | +| pickle_dict | 31.8 us | 32.9 us: 1.03x slower | +| unpickle_list | 4.67 us | 4.87 us: 1.04x slower | +| json_dumps | 10.4 ms | 11.5 ms: 1.11x slower | +| Geometric mean | (ref) | 1.01x slower | + +Benchmarks with tag 'startup': +============================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.12.6-3.12.6-a4a2d2b | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|------------------------|:------------------------------------------------------:|:----------------------------------------------------------------------:| +| python_startup_no_site | 7.16 ms | 7.38 ms: 1.03x slower | +| python_startup | 9.93 ms | 11.0 ms: 1.10x slower | +| Geometric mean | (ref) | 1.07x slower | + +Benchmarks with tag 'template': +=============================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.12.6-3.12.6-a4a2d2b | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|-----------------|:------------------------------------------------------:|:----------------------------------------------------------------------:| +| genshi_text | 22.8 ms | 22.1 ms: 1.03x faster | +| genshi_xml | 50.2 ms | 49.7 ms: 1.01x faster | +| django_template | 34.7 ms | 35.5 ms: 1.02x slower | +| mako | 11.0 ms | 12.0 ms: 1.09x slower | +| Geometric mean | (ref) | 1.02x slower | + +All benchmarks: +=============== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.12.6-3.12.6-a4a2d2b | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|--------------------------|:------------------------------------------------------:|:----------------------------------------------------------------------:| +| deepcopy | 352 us | 265 us: 1.33x faster | +| deepcopy_memo | 40.3 us | 30.4 us: 1.33x faster | +| pathlib | 21.5 ms | 18.4 ms: 1.17x faster | +| comprehensions | 19.8 us | 17.2 us: 1.15x faster | +| go | 139 ms | 122 ms: 1.14x faster | +| deepcopy_reduce | 3.08 us | 2.71 us: 1.14x faster | +| raytrace | 299 ms | 265 ms: 1.13x faster | +| generators | 32.2 ms | 28.9 ms: 1.12x faster | +| crypto_pyaes | 76.6 ms | 69.2 ms: 1.11x faster | +| logging_simple | 6.63 us | 6.10 us: 1.09x faster | +| regex_compile | 142 ms | 131 ms: 1.09x faster | +| sympy_sum | 166 ms | 153 ms: 1.09x faster | +| unpack_sequence | 52.1 ns | 48.1 ns: 1.08x faster | +| bpe_tokeniser | 4.74 sec | 4.39 sec: 1.08x faster | +| logging_format | 7.35 us | 6.81 us: 1.08x faster | +| sympy_str | 292 ms | 271 ms: 1.08x faster | +| thrift | 791 us | 744 us: 1.06x faster | +| deltablue | 3.45 ms | 3.24 ms: 1.06x faster | +| dulwich_log | 78.9 ms | 74.3 ms: 1.06x faster | +| coroutines | 23.9 ms | 22.6 ms: 1.06x faster | +| tornado_http | 119 ms | 113 ms: 1.05x faster | +| sqlglot_parse | 1.36 ms | 1.29 ms: 1.05x faster | +| chaos | 62.8 ms | 59.9 ms: 1.05x faster | +| sqlglot_transpile | 1.67 ms | 1.60 ms: 1.05x faster | +| 2to3 | 264 ms | 252 ms: 1.04x faster | +| pycparser | 1.17 sec | 1.12 sec: 1.04x faster | +| json | 5.02 ms | 4.82 ms: 1.04x faster | +| pprint_safe_repr | 743 ms | 717 ms: 1.04x faster | +| asyncio_tcp | 519 ms | 503 ms: 1.03x faster | +| genshi_text | 22.8 ms | 22.1 ms: 1.03x faster | +| unpickle | 14.1 us | 13.7 us: 1.03x faster | +| pprint_pformat | 1.52 sec | 1.48 sec: 1.03x faster | +| sympy_integrate | 20.5 ms | 20.0 ms: 1.03x faster | +| sympy_expand | 468 ms | 457 ms: 1.02x faster | +| scimark_monte_carlo | 68.4 ms | 66.9 ms: 1.02x faster | +| float | 80.8 ms | 79.0 ms: 1.02x faster | +| async_generators | 384 ms | 376 ms: 1.02x faster | +| typing_runtime_protocols | 163 us | 160 us: 1.02x faster | +| json_loads | 26.5 us | 26.1 us: 1.02x faster | +| unpickle_pure_python | 221 us | 217 us: 1.02x faster | +| xml_etree_parse | 139 ms | 137 ms: 1.01x faster | +| logging_silent | 109 ns | 108 ns: 1.01x faster | +| scimark_lu | 114 ms | 113 ms: 1.01x faster | +| nqueens | 80.1 ms | 79.2 ms: 1.01x faster | +| genshi_xml | 50.2 ms | 49.7 ms: 1.01x faster | +| hexiom | 6.17 ms | 6.12 ms: 1.01x faster | +| scimark_fft | 342 ms | 339 ms: 1.01x faster | +| docutils | 2.64 sec | 2.62 sec: 1.01x faster | +| xml_etree_iterparse | 96.7 ms | 96.2 ms: 1.01x faster | +| sqlglot_normalize | 107 ms | 106 ms: 1.01x faster | +| sqlglot_optimize | 53.3 ms | 53.4 ms: 1.00x slower | +| xml_etree_generate | 85.2 ms | 85.6 ms: 1.00x slower | +| tomli_loads | 2.11 sec | 2.12 sec: 1.00x slower | +| asyncio_websockets | 517 ms | 520 ms: 1.01x slower | +| meteor_contest | 104 ms | 104 ms: 1.01x slower | +| asyncio_tcp_ssl | 1.51 sec | 1.52 sec: 1.01x slower | +| xml_etree_process | 59.0 ms | 59.6 ms: 1.01x slower | +| pickle_pure_python | 308 us | 312 us: 1.01x slower | +| pyflate | 448 ms | 456 ms: 1.02x slower | +| fannkuch | 372 ms | 380 ms: 1.02x slower | +| django_template | 34.7 ms | 35.5 ms: 1.02x slower | +| richards_super | 51.9 ms | 53.1 ms: 1.02x slower | +| mdp | 2.42 sec | 2.48 sec: 1.03x slower | +| richards | 45.9 ms | 47.3 ms: 1.03x slower | +| pickle_list | 4.77 us | 4.91 us: 1.03x slower | +| python_startup_no_site | 7.16 ms | 7.38 ms: 1.03x slower | +| pickle | 10.9 us | 11.3 us: 1.03x slower | +| regex_effbot | 3.17 ms | 3.27 ms: 1.03x slower | +| pickle_dict | 31.8 us | 32.9 us: 1.03x slower | +| spectral_norm | 110 ms | 114 ms: 1.03x slower | +| unpickle_list | 4.67 us | 4.87 us: 1.04x slower | +| html5lib | 63.6 ms | 66.2 ms: 1.04x slower | +| scimark_sor | 130 ms | 136 ms: 1.05x slower | +| nbody | 89.3 ms | 94.0 ms: 1.05x slower | +| scimark_sparse_mat_mult | 4.39 ms | 4.64 ms: 1.06x slower | +| regex_dna | 168 ms | 179 ms: 1.07x slower | +| bench_thread_pool | 941 us | 1.02 ms: 1.08x slower | +| mako | 11.0 ms | 12.0 ms: 1.09x slower | +| python_startup | 9.93 ms | 11.0 ms: 1.10x slower | +| json_dumps | 10.4 ms | 11.5 ms: 1.11x slower | +| telco | 6.53 ms | 7.33 ms: 1.12x slower | +| coverage | 71.4 ms | 81.8 ms: 1.15x slower | +| regex_v8 | 20.6 ms | 23.7 ms: 1.15x slower | +| pidigits | 184 ms | 217 ms: 1.18x slower | +| create_gc_cycles | 1.09 ms | 1.35 ms: 1.23x slower | +| bench_mp_pool | 10.8 ms | 62.8 ms: 5.82x slower | +| Geometric mean | (ref) | 1.01x slower | + +Benchmark hidden because not significant (3): pylint, sqlite_synth, gc_traversal +Ignored benchmarks (16) of results/bm-20240906-3.12.6-a4a2d2b/bm-20240906-vultr-x86_64-python-v3.12.6-3.12.6-a4a2d2b.json: aiohttp, async_tree_cpu_io_mixed, async_tree_cpu_io_mixed_tg, async_tree_io, async_tree_io_tg, async_tree_memoization, async_tree_memoization_tg, async_tree_none, async_tree_none_tg, chameleon, dask, flaskblogging, gunicorn, mypy2, sqlalchemy_declarative, sqlalchemy_imperative + +# HPT report + +- Reliability score: 91.25% likely to be faster +- 90% likely to have a speedup of 1.00x +- 95% likely to have a speedup of 1.00x +- 99% likely to have a speedup of 1.00x + +# Memory +- memory change: 1.02x \ No newline at end of file diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.12.6.svg b/results/bm-20241019-3.14.0a1+-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.12.6.svg new file mode 100644 index 00000000..62789396 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.12.6.svg @@ -0,0 +1,3096 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.13.0rc2.md b/results/bm-20241019-3.14.0a1+-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.13.0rc2.md new file mode 100644 index 00000000..fa376ba1 --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.13.0rc2.md @@ -0,0 +1,186 @@ +# Results vs. 3.13.0rc2 + +- fork: python +- ref: 8f5e39d5c885318e3128 +- machine: linux-x86_64 +- commit hash: 8f5e39d +- commit date: 2024-10-19 +- overall geometric mean: 1.02x slower +- HPT reliability: 95.02% +- HPT 99th percentile: 1.00x slower +- Memory change: 1.00x + +Benchmarks with tag 'apps': +=========================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.13.0rc2-3.13.0rc2-ec61006 | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|----------------|:------------------------------------------------------------:|:----------------------------------------------------------------------:| +| 2to3 | 260 ms | 252 ms: 1.03x faster | +| html5lib | 67.0 ms | 66.2 ms: 1.01x faster | +| tornado_http | 114 ms | 113 ms: 1.01x faster | +| Geometric mean | (ref) | 1.01x faster | + +Benchmark hidden because not significant (1): docutils + +Benchmarks with tag 'asyncio': +============================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.13.0rc2-3.13.0rc2-ec61006 | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|-----------------|:------------------------------------------------------------:|:----------------------------------------------------------------------:| +| coroutines | 23.6 ms | 22.6 ms: 1.04x faster | +| asyncio_tcp_ssl | 1.51 sec | 1.52 sec: 1.01x slower | +| Geometric mean | (ref) | 1.01x faster | + +Benchmark hidden because not significant (3): asyncio_tcp, async_generators, asyncio_websockets + +Benchmarks with tag 'math': +=========================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.13.0rc2-3.13.0rc2-ec61006 | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|----------------|:------------------------------------------------------------:|:----------------------------------------------------------------------:| +| pidigits | 217 ms | 217 ms: 1.00x slower | +| float | 77.5 ms | 79.0 ms: 1.02x slower | +| nbody | 85.1 ms | 94.0 ms: 1.10x slower | +| Geometric mean | (ref) | 1.04x slower | + +Benchmarks with tag 'regex': +============================ + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.13.0rc2-3.13.0rc2-ec61006 | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|----------------|:------------------------------------------------------------:|:----------------------------------------------------------------------:| +| regex_dna | 180 ms | 179 ms: 1.01x faster | +| regex_v8 | 22.7 ms | 23.7 ms: 1.04x slower | +| regex_effbot | 3.08 ms | 3.27 ms: 1.06x slower | +| Geometric mean | (ref) | 1.02x slower | + +Benchmark hidden because not significant (1): regex_compile + +Benchmarks with tag 'serialize': +================================ + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.13.0rc2-3.13.0rc2-ec61006 | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|----------------------|:------------------------------------------------------------:|:----------------------------------------------------------------------:| +| unpickle | 14.3 us | 13.7 us: 1.05x faster | +| json_loads | 27.0 us | 26.1 us: 1.03x faster | +| pickle | 11.3 us | 11.3 us: 1.00x faster | +| pickle_dict | 32.5 us | 32.9 us: 1.01x slower | +| xml_etree_iterparse | 94.9 ms | 96.2 ms: 1.01x slower | +| unpickle_list | 4.71 us | 4.87 us: 1.03x slower | +| unpickle_pure_python | 210 us | 217 us: 1.03x slower | +| tomli_loads | 2.01 sec | 2.12 sec: 1.06x slower | +| pickle_pure_python | 294 us | 312 us: 1.06x slower | +| json_dumps | 10.5 ms | 11.5 ms: 1.10x slower | +| Geometric mean | (ref) | 1.02x slower | + +Benchmark hidden because not significant (4): pickle_list, xml_etree_generate, xml_etree_parse, xml_etree_process + +Benchmarks with tag 'startup': +============================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.13.0rc2-3.13.0rc2-ec61006 | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|------------------------|:------------------------------------------------------------:|:----------------------------------------------------------------------:| +| python_startup | 11.0 ms | 11.0 ms: 1.00x faster | +| python_startup_no_site | 7.39 ms | 7.38 ms: 1.00x faster | +| Geometric mean | (ref) | 1.00x faster | + +Benchmarks with tag 'template': +=============================== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.13.0rc2-3.13.0rc2-ec61006 | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|-----------------|:------------------------------------------------------------:|:----------------------------------------------------------------------:| +| genshi_xml | 48.8 ms | 49.7 ms: 1.02x slower | +| genshi_text | 21.5 ms | 22.1 ms: 1.03x slower | +| django_template | 34.1 ms | 35.5 ms: 1.04x slower | +| mako | 11.3 ms | 12.0 ms: 1.05x slower | +| Geometric mean | (ref) | 1.03x slower | + +All benchmarks: +=============== + +| Benchmark | bm-20240906-vultr-x86_64-python-v3.13.0rc2-3.13.0rc2-ec61006 | bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d | +|--------------------------|:------------------------------------------------------------:|:----------------------------------------------------------------------:| +| deepcopy | 355 us | 265 us: 1.34x faster | +| deepcopy_memo | 39.1 us | 30.4 us: 1.29x faster | +| go | 141 ms | 122 ms: 1.15x faster | +| deepcopy_reduce | 3.11 us | 2.71 us: 1.15x faster | +| telco | 7.82 ms | 7.33 ms: 1.07x faster | +| unpickle | 14.3 us | 13.7 us: 1.05x faster | +| thrift | 778 us | 744 us: 1.05x faster | +| pathlib | 19.2 ms | 18.4 ms: 1.04x faster | +| coroutines | 23.6 ms | 22.6 ms: 1.04x faster | +| json_loads | 27.0 us | 26.1 us: 1.03x faster | +| scimark_fft | 349 ms | 339 ms: 1.03x faster | +| 2to3 | 260 ms | 252 ms: 1.03x faster | +| pprint_safe_repr | 738 ms | 717 ms: 1.03x faster | +| json | 4.93 ms | 4.82 ms: 1.02x faster | +| sympy_sum | 156 ms | 153 ms: 1.02x faster | +| scimark_sparse_mat_mult | 4.71 ms | 4.64 ms: 1.02x faster | +| coverage | 83.0 ms | 81.8 ms: 1.01x faster | +| sympy_str | 275 ms | 271 ms: 1.01x faster | +| bpe_tokeniser | 4.45 sec | 4.39 sec: 1.01x faster | +| html5lib | 67.0 ms | 66.2 ms: 1.01x faster | +| pprint_pformat | 1.50 sec | 1.48 sec: 1.01x faster | +| logging_simple | 6.16 us | 6.10 us: 1.01x faster | +| tornado_http | 114 ms | 113 ms: 1.01x faster | +| regex_dna | 180 ms | 179 ms: 1.01x faster | +| dulwich_log | 74.8 ms | 74.3 ms: 1.01x faster | +| pickle | 11.3 us | 11.3 us: 1.00x faster | +| python_startup | 11.0 ms | 11.0 ms: 1.00x faster | +| python_startup_no_site | 7.39 ms | 7.38 ms: 1.00x faster | +| pidigits | 217 ms | 217 ms: 1.00x slower | +| asyncio_tcp_ssl | 1.51 sec | 1.52 sec: 1.01x slower | +| nqueens | 78.6 ms | 79.2 ms: 1.01x slower | +| sympy_integrate | 19.8 ms | 20.0 ms: 1.01x slower | +| pickle_dict | 32.5 us | 32.9 us: 1.01x slower | +| sqlglot_optimize | 52.7 ms | 53.4 ms: 1.01x slower | +| xml_etree_iterparse | 94.9 ms | 96.2 ms: 1.01x slower | +| scimark_sor | 134 ms | 136 ms: 1.01x slower | +| pyflate | 449 ms | 456 ms: 1.02x slower | +| genshi_xml | 48.8 ms | 49.7 ms: 1.02x slower | +| crypto_pyaes | 67.9 ms | 69.2 ms: 1.02x slower | +| float | 77.5 ms | 79.0 ms: 1.02x slower | +| hexiom | 5.99 ms | 6.12 ms: 1.02x slower | +| sqlglot_transpile | 1.56 ms | 1.60 ms: 1.02x slower | +| scimark_monte_carlo | 65.4 ms | 66.9 ms: 1.02x slower | +| spectral_norm | 111 ms | 114 ms: 1.03x slower | +| meteor_contest | 102 ms | 104 ms: 1.03x slower | +| genshi_text | 21.5 ms | 22.1 ms: 1.03x slower | +| fannkuch | 370 ms | 380 ms: 1.03x slower | +| richards_super | 51.6 ms | 53.1 ms: 1.03x slower | +| sqlglot_parse | 1.25 ms | 1.29 ms: 1.03x slower | +| unpickle_list | 4.71 us | 4.87 us: 1.03x slower | +| unpickle_pure_python | 210 us | 217 us: 1.03x slower | +| typing_runtime_protocols | 155 us | 160 us: 1.04x slower | +| deltablue | 3.12 ms | 3.24 ms: 1.04x slower | +| django_template | 34.1 ms | 35.5 ms: 1.04x slower | +| regex_v8 | 22.7 ms | 23.7 ms: 1.04x slower | +| chaos | 57.3 ms | 59.9 ms: 1.04x slower | +| richards | 45.2 ms | 47.3 ms: 1.05x slower | +| comprehensions | 16.5 us | 17.2 us: 1.05x slower | +| logging_silent | 103 ns | 108 ns: 1.05x slower | +| raytrace | 253 ms | 265 ms: 1.05x slower | +| mdp | 2.36 sec | 2.48 sec: 1.05x slower | +| mako | 11.3 ms | 12.0 ms: 1.05x slower | +| tomli_loads | 2.01 sec | 2.12 sec: 1.06x slower | +| pickle_pure_python | 294 us | 312 us: 1.06x slower | +| regex_effbot | 3.08 ms | 3.27 ms: 1.06x slower | +| unpack_sequence | 44.8 ns | 48.1 ns: 1.07x slower | +| json_dumps | 10.5 ms | 11.5 ms: 1.10x slower | +| gc_traversal | 3.14 ms | 3.47 ms: 1.10x slower | +| nbody | 85.1 ms | 94.0 ms: 1.10x slower | +| bench_thread_pool | 919 us | 1.02 ms: 1.10x slower | +| bench_mp_pool | 11.0 ms | 62.8 ms: 5.71x slower | +| Geometric mean | (ref) | 1.02x slower | + +Benchmark hidden because not significant (18): regex_compile, logging_format, asyncio_tcp, pickle_list, async_generators, sympy_expand, asyncio_websockets, sqlite_synth, xml_etree_generate, scimark_lu, docutils, pylint, sqlglot_normalize, xml_etree_parse, pycparser, generators, xml_etree_process, create_gc_cycles +Ignored benchmarks (13) of results/bm-20240906-3.13.0rc2-ec61006/bm-20240906-vultr-x86_64-python-v3.13.0rc2-3.13.0rc2-ec61006.json: aiohttp, async_tree_cpu_io_mixed, async_tree_cpu_io_mixed_tg, async_tree_io, async_tree_io_tg, async_tree_memoization, async_tree_memoization_tg, async_tree_none, async_tree_none_tg, chameleon, dask, flaskblogging, gunicorn + +# HPT report + +- Reliability score: 95.02% likely to be slow +- 90% likely to have a slowdown of 1.00x +- 95% likely to have a slowdown of 1.00x +- 99% likely to have a slowdown of 1.00x + +# Memory +- memory change: 1.00x \ No newline at end of file diff --git a/results/bm-20241019-3.14.0a1+-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.13.0rc2.svg b/results/bm-20241019-3.14.0a1+-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.13.0rc2.svg new file mode 100644 index 00000000..7ad4979c --- /dev/null +++ b/results/bm-20241019-3.14.0a1+-8f5e39d/bm-20241019-vultr-x86_64-python-8f5e39d5c885318e3128-3.14.0a1+-8f5e39d-vs-3.13.0rc2.svg @@ -0,0 +1,3202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +