前回に続き,
本カンファレンスに一緒に参加した池さん
PyPy (執筆:池さん)
PyPy IN PRODUCTION
PyPyのセッションは,
- Armin Rigo氏
- 大学にてプログラミング言語および言語実装を研究。PyPyプロジェクトのリーダー。CPythonのJITコンパイラであるPsycoの作者。Antonio Cuni氏らとPyPyに関する論文を共著。
- Antonio Cuni氏
- 2006年よりPyPyのメインコミッター。CLI/
.NET, JITコンパイラの開発者。PyPyの開発・ 研究により2010年にPhDを取得。pdb++の作者/マネージャ, virtualenvのコントリビュータ。現在はOpenEndに雇われておりPyPyのフルタイム開発者。
PyPyって何?
最初にPyPyについて紹介します。
PyPyプロジェクトは2003年にスタートし,
PyPyには大きく2つの使命があります。
1つ目は動的言語を作成するためのフレームワークとしてのPyPyです。
これは言語仕様と実装を明確に分離し,
2つ目は,
これはRPython Toolchainを使って,
これらの2つから,
また,
- メモリとスレッドモデル
- ガーベージコレクションの戦略
- 最適化の適用
- そもそもJITコンパイラを持っているかどうか
など,
PyPyはさらにその先の目標を設定しています。伝統的に言語処理系は,
PyPyはアプリケーションと各ターゲット環境間の基本的なマッピングを提供し,
PyPy 1. 5
PyPy1.
また,
PyPyの今後
PyPyは大規模な並列処理のためにマイクロスレッドをサポートしたStacklessバージョンも別にあります。StacklessバージョンとJITコンパイラの統合が現在進行中です。
cpyextはCPythonのC-API互換性レイヤーです。現状cpyextはどんな場面でもちゃんと動くというわけではありませんが,
メモリ消費が少ないコンパクトなインスタンス
処理速度
次のグラフは,
次のグラフは,
次のグラフは,
処理速度に関しての最新の情報はpypy.
PyPy活用事例
PyPyが実際に使われている事例を紹介します。
1つ目の事例は,
gitdmはCPythonでは63秒かかるのに対して,
2つ目の事例は,
3つ目の事例は,
他にも様々な場面でPyPyが活用されていますが,