Skip to content

Instantly share code, notes, and snippets.

@bradmontgomery
Last active May 17, 2022 00:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bradmontgomery/d05ccd8d15fcef8e255e9d57095a83f9 to your computer and use it in GitHub Desktop.
Save bradmontgomery/d05ccd8d15fcef8e255e9d57095a83f9 to your computer and use it in GitHub Desktop.
MEMpy 2022-05-16 --> What's new in Python 3.11

MEMpy 2022-05-16

What's new in python 3.11 -- Coming Soon!

python release timeline

Official Releases from 1996 - 2022

releases

python 3.10 re-cap

If you're not running python 3.10 yet... What's new in Python 3.10

The highlights:

  • Structural pattern matching
  • Nice Typing features (e.g. Unions as X | Y), Type Aliases
  • Lots of deprecations
  • Nicer syntax for Context Managers
  • Better Error mesages

python 3.11

Even better error messages

https://docs.python.org/3.11/whatsnew/3.11.html#enhanced-error-locations-in-tracebacks

exception groups

https://peps.python.org/pep-0654/#specification

New Types & typing updates

tomllib

  • TOML support: https://toml.io/en/
  • Increasingly used as a config file format: black, mypy, pytest, tox, pylint and isort
  • Preferred format for python distribution config: pyproject.toml -- pep 518

MANY module updates

https://docs.python.org/3.11/whatsnew/3.11.html#improved-modules

  • datetime.UTC
  • itertools
  • typing

Performance!

Deprecations / cleaning up cruft

https://docs.python.org/3.11/whatsnew/3.11.html#deprecated

Additional Resources

py310.json
==========
Performance version: 1.0.5
Report on macOS-12.3.1-x86_64-i386-64bit
Number of logical CPUs: 4
Start date: 2022-05-16 08:30:17.521956
End date: 2022-05-16 08:52:27.707811
py311.json
==========
Performance version: 1.0.5
Report on macOS-12.3.1-x86_64-i386-64bit
Number of logical CPUs: 4
Start date: 2022-05-16 08:56:13.230283
End date: 2022-05-16 09:16:47.109641
### 2to3 ###
Mean +- std dev: 411 ms +- 17 ms -> 348 ms +- 33 ms: 1.18x faster
Significant (t=13.06)
### chameleon ###
Mean +- std dev: 11.7 ms +- 0.2 ms -> 9.6 ms +- 0.3 ms: 1.21x faster
Significant (t=51.84)
### chaos ###
Mean +- std dev: 129 ms +- 2 ms -> 85 ms +- 2 ms: 1.51x faster
Significant (t=107.05)
### crypto_pyaes ###
Mean +- std dev: 142 ms +- 3 ms -> 94 ms +- 2 ms: 1.50x faster
Significant (t=114.76)
### deltablue ###
Mean +- std dev: 9.02 ms +- 0.18 ms -> 5.23 ms +- 0.41 ms: 1.73x faster
Significant (t=66.04)
### django_template ###
Mean +- std dev: 57.8 ms +- 1.2 ms -> 45.1 ms +- 2.2 ms: 1.28x faster
Significant (t=39.39)
### dulwich_log ###
Mean +- std dev: 102 ms +- 2 ms -> 89 ms +- 2 ms: 1.15x faster
Significant (t=44.46)
### fannkuch ###
Mean +- std dev: 595 ms +- 10 ms -> 453 ms +- 9 ms: 1.31x faster
Significant (t=81.59)
### float ###
Mean +- std dev: 126 ms +- 2 ms -> 90 ms +- 2 ms: 1.40x faster
Significant (t=108.34)
### genshi_text ###
Mean +- std dev: 36.3 ms +- 0.6 ms -> 27.7 ms +- 2.3 ms: 1.31x faster
Significant (t=28.24)
### genshi_xml ###
Mean +- std dev: 80.9 ms +- 1.8 ms -> 68.6 ms +- 1.4 ms: 1.18x faster
Significant (t=41.70)
### go ###
Mean +- std dev: 279 ms +- 4 ms -> 175 ms +- 3 ms: 1.60x faster
Significant (t=163.68)
### hexiom ###
Mean +- std dev: 11.8 ms +- 0.2 ms -> 7.9 ms +- 0.1 ms: 1.50x faster
Significant (t=136.36)
### html5lib ###
Mean +- std dev: 99.1 ms +- 5.4 ms -> 72.3 ms +- 3.9 ms: 1.37x faster
Significant (t=31.26)
### json_dumps ###
Mean +- std dev: 16.1 ms +- 0.2 ms -> 14.6 ms +- 0.3 ms: 1.11x faster
Significant (t=33.66)
### json_loads ###
Mean +- std dev: 30.9 us +- 1.5 us -> 29.8 us +- 0.5 us: 1.04x faster
Significant (t=5.27)
### logging_format ###
Mean +- std dev: 11.2 us +- 0.2 us -> 8.0 us +- 0.2 us: 1.40x faster
Significant (t=84.73)
### logging_silent ###
Mean +- std dev: 203 ns +- 7 ns -> 117 ns +- 2 ns: 1.74x faster
Significant (t=91.00)
### logging_simple ###
Mean +- std dev: 10.2 us +- 0.2 us -> 7.3 us +- 0.1 us: 1.41x faster
Significant (t=91.02)
### mako ###
Mean +- std dev: 18.8 ms +- 0.3 ms -> 12.9 ms +- 0.2 ms: 1.46x faster
Significant (t=110.81)
### meteor_contest ###
Mean +- std dev: 126 ms +- 2 ms -> 115 ms +- 2 ms: 1.10x faster
Significant (t=27.22)
### nbody ###
Mean +- std dev: 177 ms +- 4 ms -> 101 ms +- 1 ms: 1.75x faster
Significant (t=152.27)
### nqueens ###
Mean +- std dev: 129 ms +- 2 ms -> 103 ms +- 2 ms: 1.25x faster
Significant (t=61.93)
### pathlib ###
Mean +- std dev: 41.5 ms +- 1.9 ms -> 38.9 ms +- 1.4 ms: 1.07x faster
Significant (t=8.50)
### pickle ###
Mean +- std dev: 12.2 us +- 0.2 us -> 12.3 us +- 0.2 us: 1.00x slower
Not significant
### pickle_dict ###
Mean +- std dev: 28.5 us +- 1.4 us -> 28.2 us +- 0.4 us: 1.01x faster
Not significant
### pickle_list ###
Mean +- std dev: 4.75 us +- 0.10 us -> 4.42 us +- 0.08 us: 1.07x faster
Significant (t=19.93)
### pickle_pure_python ###
Mean +- std dev: 550 us +- 8 us -> 372 us +- 6 us: 1.48x faster
Significant (t=129.50)
### pidigits ###
Mean +- std dev: 206 ms +- 2 ms -> 219 ms +- 2 ms: 1.07x slower
Significant (t=-32.26)
### pyflate ###
Mean +- std dev: 847 ms +- 18 ms -> 559 ms +- 14 ms: 1.51x faster
Significant (t=98.34)
### python_startup ###
Mean +- std dev: 19.3 ms +- 0.4 ms -> 19.6 ms +- 0.5 ms: 1.02x slower
Not significant
### python_startup_no_site ###
Mean +- std dev: 14.9 ms +- 0.4 ms -> 16.9 ms +- 0.4 ms: 1.13x slower
Significant (t=-54.09)
### raytrace ###
Mean +- std dev: 565 ms +- 11 ms -> 350 ms +- 4 ms: 1.62x faster
Significant (t=141.29)
### regex_compile ###
Mean +- std dev: 208 ms +- 3 ms -> 161 ms +- 4 ms: 1.29x faster
Significant (t=79.62)
### regex_dna ###
Mean +- std dev: 208 ms +- 6 ms -> 189 ms +- 2 ms: 1.10x faster
Significant (t=25.30)
### regex_effbot ###
Mean +- std dev: 3.92 ms +- 0.07 ms -> 3.15 ms +- 0.03 ms: 1.24x faster
Significant (t=82.11)
### regex_v8 ###
Mean +- std dev: 28.9 ms +- 0.4 ms -> 25.5 ms +- 0.4 ms: 1.13x faster
Significant (t=42.16)
### richards ###
Mean +- std dev: 85.4 ms +- 1.3 ms -> 57.7 ms +- 1.0 ms: 1.48x faster
Significant (t=133.27)
### scimark_fft ###
Mean +- std dev: 477 ms +- 5 ms -> 393 ms +- 8 ms: 1.21x faster
Significant (t=68.75)
### scimark_lu ###
Mean +- std dev: 202 ms +- 4 ms -> 129 ms +- 2 ms: 1.56x faster
Significant (t=122.65)
### scimark_monte_carlo ###
Mean +- std dev: 121 ms +- 2 ms -> 73 ms +- 1 ms: 1.67x faster
Significant (t=144.17)
### scimark_sor ###
Mean +- std dev: 226 ms +- 3 ms -> 129 ms +- 2 ms: 1.75x faster
Significant (t=198.88)
### scimark_sparse_mat_mult ###
Mean +- std dev: 6.78 ms +- 0.16 ms -> 5.62 ms +- 0.09 ms: 1.21x faster
Significant (t=49.39)
### spectral_norm ###
Mean +- std dev: 184 ms +- 5 ms -> 133 ms +- 3 ms: 1.38x faster
Significant (t=61.00)
### sqlalchemy_declarative ###
Mean +- std dev: 178 ms +- 5 ms -> 146 ms +- 4 ms: 1.22x faster
Significant (t=38.57)
### sqlalchemy_imperative ###
Mean +- std dev: 26.8 ms +- 1.2 ms -> 21.7 ms +- 0.5 ms: 1.24x faster
Significant (t=31.10)
### sqlite_synth ###
Mean +- std dev: 3.08 us +- 0.05 us -> 2.66 us +- 0.07 us: 1.16x faster
Significant (t=39.20)
### sympy_expand ###
Mean +- std dev: 619 ms +- 10 ms -> 536 ms +- 5 ms: 1.15x faster
Significant (t=56.05)
### sympy_integrate ###
Mean +- std dev: 27.2 ms +- 0.5 ms -> 23.0 ms +- 0.5 ms: 1.18x faster
Significant (t=42.66)
### sympy_str ###
Mean +- std dev: 377 ms +- 7 ms -> 328 ms +- 4 ms: 1.15x faster
Significant (t=48.72)
### sympy_sum ###
Mean +- std dev: 215 ms +- 4 ms -> 188 ms +- 4 ms: 1.14x faster
Significant (t=36.03)
### telco ###
Mean +- std dev: 7.85 ms +- 0.36 ms -> 6.76 ms +- 0.15 ms: 1.16x faster
Significant (t=21.99)
### tornado_http ###
Mean +- std dev: 231 ms +- 12 ms -> 184 ms +- 9 ms: 1.26x faster
Significant (t=24.41)
### unpack_sequence ###
Mean +- std dev: 74.7 ns +- 0.8 ns -> 48.6 ns +- 1.4 ns: 1.54x faster
Significant (t=126.23)
### unpickle ###
Mean +- std dev: 16.9 us +- 1.1 us -> 16.4 us +- 0.5 us: 1.03x faster
Significant (t=2.77)
### unpickle_list ###
Mean +- std dev: 4.92 us +- 0.09 us -> 4.84 us +- 0.09 us: 1.02x faster
Not significant
### unpickle_pure_python ###
Mean +- std dev: 383 us +- 10 us -> 287 us +- 5 us: 1.33x faster
Significant (t=64.36)
### xml_etree_generate ###
Mean +- std dev: 107 ms +- 2 ms -> 95 ms +- 2 ms: 1.13x faster
Significant (t=32.31)
### xml_etree_iterparse ###
Mean +- std dev: 127 ms +- 3 ms -> 118 ms +- 3 ms: 1.08x faster
Significant (t=15.67)
### xml_etree_parse ###
Mean +- std dev: 186 ms +- 3 ms -> 180 ms +- 3 ms: 1.04x faster
Significant (t=12.34)
### xml_etree_process ###
Mean +- std dev: 87.0 ms +- 1.6 ms -> 65.6 ms +- 1.1 ms: 1.33x faster
Significant (t=83.67)
py39.json
=========
Performance version: 1.0.5
Report on macOS-10.16-x86_64-i386-64bit
Number of logical CPUs: 4
Start date: 2022-05-16 09:55:43.484134
End date: 2022-05-16 10:19:30.077936
py311.json
==========
Performance version: 1.0.5
Report on macOS-12.3.1-x86_64-i386-64bit
Number of logical CPUs: 4
Start date: 2022-05-16 08:56:13.230283
End date: 2022-05-16 09:16:47.109641
### 2to3 ###
Mean +- std dev: 473 ms +- 19 ms -> 348 ms +- 33 ms: 1.36x faster
Significant (t=25.13)
### chameleon ###
Mean +- std dev: 13.7 ms +- 0.2 ms -> 9.6 ms +- 0.3 ms: 1.43x faster
Significant (t=94.50)
### chaos ###
Mean +- std dev: 173 ms +- 9 ms -> 85 ms +- 2 ms: 2.03x faster
Significant (t=74.38)
### crypto_pyaes ###
Mean +- std dev: 166 ms +- 2 ms -> 94 ms +- 2 ms: 1.76x faster
Significant (t=187.93)
### deltablue ###
Mean +- std dev: 11.2 ms +- 0.3 ms -> 5.2 ms +- 0.4 ms: 2.15x faster
Significant (t=89.58)
### django_template ###
Mean +- std dev: 78.7 ms +- 2.0 ms -> 45.1 ms +- 2.2 ms: 1.74x faster
Significant (t=87.92)
### dulwich_log ###
Mean +- std dev: 119 ms +- 5 ms -> 89 ms +- 2 ms: 1.34x faster
Significant (t=46.65)
### fannkuch ###
Mean +- std dev: 635 ms +- 7 ms -> 453 ms +- 9 ms: 1.40x faster
Significant (t=125.99)
### float ###
Mean +- std dev: 159 ms +- 2 ms -> 90 ms +- 2 ms: 1.77x faster
Significant (t=202.71)
### genshi_text ###
Mean +- std dev: 43.0 ms +- 0.7 ms -> 27.7 ms +- 2.3 ms: 1.55x faster
Significant (t=49.76)
### genshi_xml ###
Mean +- std dev: 89.4 ms +- 1.9 ms -> 68.6 ms +- 1.4 ms: 1.30x faster
Significant (t=68.30)
### go ###
Mean +- std dev: 382 ms +- 9 ms -> 175 ms +- 3 ms: 2.19x faster
Significant (t=176.17)
### hexiom ###
Mean +- std dev: 14.6 ms +- 0.3 ms -> 7.9 ms +- 0.1 ms: 1.85x faster
Significant (t=159.79)
### html5lib ###
Mean +- std dev: 121 ms +- 6 ms -> 72 ms +- 4 ms: 1.67x faster
Significant (t=50.10)
### json_dumps ###
Mean +- std dev: 18.7 ms +- 0.3 ms -> 14.6 ms +- 0.3 ms: 1.28x faster
Significant (t=77.62)
### json_loads ###
Mean +- std dev: 44.0 us +- 0.5 us -> 29.8 us +- 0.5 us: 1.48x faster
Significant (t=154.54)
### logging_format ###
Mean +- std dev: 14.3 us +- 0.3 us -> 8.0 us +- 0.2 us: 1.80x faster
Significant (t=146.08)
### logging_silent ###
Mean +- std dev: 293 ns +- 8 ns -> 117 ns +- 2 ns: 2.51x faster
Significant (t=165.91)
### logging_simple ###
Mean +- std dev: 13.1 us +- 0.3 us -> 7.3 us +- 0.1 us: 1.80x faster
Significant (t=154.97)
### mako ###
Mean +- std dev: 24.4 ms +- 0.3 ms -> 12.9 ms +- 0.2 ms: 1.89x faster
Significant (t=216.17)
### meteor_contest ###
Mean +- std dev: 133 ms +- 1 ms -> 115 ms +- 2 ms: 1.17x faster
Significant (t=54.63)
### nbody ###
Mean +- std dev: 199 ms +- 3 ms -> 101 ms +- 1 ms: 1.97x faster
Significant (t=225.20)
### nqueens ###
Mean +- std dev: 141 ms +- 2 ms -> 103 ms +- 2 ms: 1.36x faster
Significant (t=96.24)
### pathlib ###
Mean +- std dev: 45.5 ms +- 1.4 ms -> 38.9 ms +- 1.4 ms: 1.17x faster
Significant (t=26.15)
### pickle ###
Mean +- std dev: 15.6 us +- 0.3 us -> 12.3 us +- 0.2 us: 1.27x faster
Significant (t=66.47)
### pickle_dict ###
Mean +- std dev: 35.1 us +- 0.5 us -> 28.2 us +- 0.4 us: 1.24x faster
Significant (t=83.73)
### pickle_list ###
Mean +- std dev: 5.52 us +- 0.10 us -> 4.42 us +- 0.08 us: 1.25x faster
Significant (t=65.76)
### pickle_pure_python ###
Mean +- std dev: 702 us +- 12 us -> 372 us +- 6 us: 1.89x faster
Significant (t=192.88)
### pidigits ###
Mean +- std dev: 219 ms +- 2 ms -> 219 ms +- 2 ms: 1.00x slower
Not significant
### pyflate ###
Mean +- std dev: 1.04 sec +- 0.02 sec -> 0.56 sec +- 0.01 sec: 1.85x faster
Significant (t=175.31)
### python_startup ###
Mean +- std dev: 19.2 ms +- 0.4 ms -> 19.6 ms +- 0.5 ms: 1.02x slower
Not significant
### python_startup_no_site ###
Mean +- std dev: 14.7 ms +- 0.3 ms -> 16.9 ms +- 0.4 ms: 1.15x slower
Significant (t=-62.96)
### raytrace ###
Mean +- std dev: 796 ms +- 11 ms -> 350 ms +- 4 ms: 2.28x faster
Significant (t=291.05)
### regex_compile ###
Mean +- std dev: 242 ms +- 4 ms -> 161 ms +- 4 ms: 1.50x faster
Significant (t=117.91)
### regex_dna ###
Mean +- std dev: 211 ms +- 2 ms -> 189 ms +- 2 ms: 1.12x faster
Significant (t=62.91)
### regex_effbot ###
Mean +- std dev: 3.95 ms +- 0.05 ms -> 3.15 ms +- 0.03 ms: 1.25x faster
Significant (t=111.43)
### regex_v8 ###
Mean +- std dev: 32.4 ms +- 0.4 ms -> 25.5 ms +- 0.4 ms: 1.27x faster
Significant (t=89.06)
### richards ###
Mean +- std dev: 112 ms +- 2 ms -> 58 ms +- 1 ms: 1.95x faster
Significant (t=188.54)
### scimark_fft ###
Mean +- std dev: 570 ms +- 5 ms -> 393 ms +- 8 ms: 1.45x faster
Significant (t=141.59)
### scimark_lu ###
Mean +- std dev: 232 ms +- 3 ms -> 129 ms +- 2 ms: 1.80x faster
Significant (t=249.45)
### scimark_monte_carlo ###
Mean +- std dev: 160 ms +- 5 ms -> 73 ms +- 1 ms: 2.20x faster
Significant (t=122.70)
### scimark_sor ###
Mean +- std dev: 297 ms +- 4 ms -> 129 ms +- 2 ms: 2.30x faster
Significant (t=312.38)
### scimark_sparse_mat_mult ###
Mean +- std dev: 7.49 ms +- 0.12 ms -> 5.62 ms +- 0.09 ms: 1.33x faster
Significant (t=98.27)
### spectral_norm ###
Mean +- std dev: 226 ms +- 4 ms -> 133 ms +- 3 ms: 1.70x faster
Significant (t=142.82)
### sqlalchemy_declarative ###
Mean +- std dev: 198 ms +- 6 ms -> 146 ms +- 4 ms: 1.36x faster
Significant (t=57.14)
### sqlalchemy_imperative ###
Mean +- std dev: 30.6 ms +- 1.2 ms -> 21.7 ms +- 0.5 ms: 1.41x faster
Significant (t=53.83)
### sqlite_synth ###
Mean +- std dev: 4.10 us +- 0.86 us -> 2.66 us +- 0.07 us: 1.54x faster
Significant (t=12.95)
### sympy_expand ###
Mean +- std dev: 746 ms +- 8 ms -> 536 ms +- 5 ms: 1.39x faster
Significant (t=170.49)
### sympy_integrate ###
Mean +- std dev: 30.7 ms +- 0.4 ms -> 23.0 ms +- 0.5 ms: 1.33x faster
Significant (t=91.45)
### sympy_str ###
Mean +- std dev: 445 ms +- 7 ms -> 328 ms +- 4 ms: 1.35x faster
Significant (t=110.16)
### sympy_sum ###
Mean +- std dev: 244 ms +- 4 ms -> 188 ms +- 4 ms: 1.30x faster
Significant (t=79.05)
### telco ###
Mean +- std dev: 8.90 ms +- 0.23 ms -> 6.76 ms +- 0.15 ms: 1.32x faster
Significant (t=61.37)
### tornado_http ###
Mean +- std dev: 261 ms +- 10 ms -> 184 ms +- 9 ms: 1.42x faster
Significant (t=44.72)
### unpack_sequence ###
Mean +- std dev: 55.8 ns +- 1.6 ns -> 48.6 ns +- 1.4 ns: 1.15x faster
Significant (t=25.92)
### unpickle ###
Mean +- std dev: 21.4 us +- 0.6 us -> 16.4 us +- 0.5 us: 1.30x faster
Significant (t=46.46)
### unpickle_list ###
Mean +- std dev: 5.27 us +- 0.10 us -> 4.84 us +- 0.09 us: 1.09x faster
Significant (t=24.35)
### unpickle_pure_python ###
Mean +- std dev: 489 us +- 13 us -> 287 us +- 5 us: 1.70x faster
Significant (t=116.12)
### xml_etree_generate ###
Mean +- std dev: 127 ms +- 3 ms -> 95 ms +- 2 ms: 1.33x faster
Significant (t=70.63)
### xml_etree_iterparse ###
Mean +- std dev: 134 ms +- 3 ms -> 118 ms +- 3 ms: 1.14x faster
Significant (t=28.21)
### xml_etree_parse ###
Mean +- std dev: 180 ms +- 6 ms -> 180 ms +- 3 ms: 1.00x faster
Not significant
### xml_etree_process ###
Mean +- std dev: 103 ms +- 4 ms -> 66 ms +- 1 ms: 1.57x faster
Significant (t=65.34)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment