10/14(金)~15(土)に開催されたPyCon JP 2022に行ってきました。
私自身まだPython歴半年の若輩者ですが、諸先輩方から学びたいと思い初めて参加することにしました。
各セッションごとに、記事を投稿していきたいと思います。
まずはDay1のKeynoteからです。
動画
スライド
- 公開なし
スピーカー
- Mark Shanonnさん
- Microsoftが出資するCPython高速化チームのリーダー
内容まとめ
- PythonのVMごとの高速化についての話
用語について
VM(バーチャルマシン)
- Pythonプログラムを動かすためのマシン
Baseline Performance
- 最適化されてないコードの高速化
Optimizer Performance
- optimizer自体の高速化
Psyco(2003-2007)
- JITコンパイラーの特殊化
- シンプルにする(間違った)仮説を立てた
- 上手くいったら早い
- 32bit x86 のみ
PyPy (2006-)
- Psycoの方向性を正しく行った
- RPythonで書かれている
HotPy (2007-2010)
- PhDの研究
- JITのトレース
Jython and IronPython
Jython (1997-)
- JVM上で動くPython
- Cpythonより少し遅い
IronPython (2006-)
- .NET上で動くPython
Unladen Swallow (2009-2011)
- Googleのプロジェクト
- Based on Cpython
- 最終的な目標は、Cythonにマージすること
Pyston version1(2014-2017)
- DropBoxのプロジェクト
- LLVMが使われている
Pyjion (2015-2022)
- RyuJITが使われている
Skybison (2018-2021)
- Instagram(現Meta)のプロジェクト
- 特別なインタプリタを搭載
- No JITコンパイラー
- Cinderに移行
Cinder (2019-)
- Instagram(現Meta)のプロジェクト
- Based on Cpython
- 大規模なサーバファームになら有効
VMのプロジェクトは失敗が多かった
- たくさんのプロジェクトが立ち上がったわりに、過去の失敗から学ばなかった
Pyston version2 (2020-)
- 最新のVM
- メソッド単位のJITコンパイラー
- Based on Cpython
Fater CPython (2021-)
- Microsoftのプロジェクト
- CPythonの数倍の高速化を目指す
- 学んだ教訓を活かす
- Python 3.11として、10日後くらいにリリースされる
感想
- 私自身過去にはPHPとかRubyをやってきましたが、処理系まで深く勉強したことがなかったので、学びになりました。
- 「たくさんのプロジェクトが立ち上がったわりに、過去の失敗から学ばなかった」というのは、各社単体ごとのプロジェクトだったので、それぞれのノウハウが共有されにくかったのかなと思いました。