タグ

ブックマーク / www.python.jp (4)

  • Python 3.11の新機能(その3)関数呼び出しのインライン化 - python.jp

    Python 3.11では、パフォーマンスチューニングの一環として、Python関数呼び出しのインライン化 が行われました。既存のPythonインタープリタのしくみを大きく変更する変更ですので、簡単に解説しておきます。 先に書いておきますが、今回行われた「関数呼び出しのインライン化」は、C/C++などの inline のように、ユーザ定義関数を呼び出し元で展開してオーバヘッドを削減するものではありません。また、Schemeなどにある末尾再帰の最適化でもありません。 cevalループ¶Pythonインタープリタは、Python 3.11の新機能(その2) 特殊化適応的インタープリタ で解説したように、Pythonのソースコードをバイトコードへ変換し、順次実行します。このバイトコードを実行する関数はPythonインタープリタの心臓部であり、CPythonソースツリーのファイル Python/c

    mickn
    mickn 2022/09/06
  • Python 3.11の新機能(その2) 特殊化適応的インタープリタ - python.jp

    特殊化適応的インタープリタ(PEP 659: Specializing Adaptive Interpreter) は、 Python 3.11の新機能(その1) CPython高速化計画 で紹介した CPython 高速化計画 の一環として導入された新機能で、実行中にプログラムをより効率的な処理に書き換えて高速化する仕組みです。 バイトコード¶Pythonはプログラムを実行するとき、ソースコードをコンパイルしてバイトコードと呼ばれる実行用のデータを生成します。例えば、次の関数 func_add() は、次のようなバイトコードに変換されます(Python 3.10の場合)。関数のバイトコードは、dis.dis()関数 で出力できます。 >>> dis.dis(func_add) 2 0 LOAD_FAST 0 (a) 2 LOAD_FAST 1 (b) 4 BINARY_ADD 6 RET

    mickn
    mickn 2022/09/06
  • Python 3.11の新機能(その1) CPython高速化計画 - python.jp

    今年も、Pythonのメジャーリリースの季節がやってまいりました。2022年10月3日にリリース予定となっているPython 3.11の新機能を紹介します。 CPython 高速化計画¶Python 3.11で最大のニュースは、なんと言っても Faster CPython: CPython 高速化計画 が開始されたことでしょう。 CPython 高速化計画は、Mark Shannon氏が提案したプランに基づいてPythonの高速化を行うもので、Pythonを毎年50%高速化し、互換性を保ちつつ 4年間で5倍高速化する ことを目標としています。 この計画はMicrosoft社の出資を獲得し、Pythonの父であるGuido van Rossum氏も加わって開発が進められています。 ベンチマーク¶さて、CPython 高速化計画最初のリリースとなるPython 3.11では、どの程度の高速化が

    Python 3.11の新機能(その1) CPython高速化計画 - python.jp
    mickn
    mickn 2022/09/06
  • Python 3.9の新機能 - python.jp

    Python 3.9 のリリース予定日である2020年10月05日が間近に迫ってきました。 https://docs.python.org/3.9/whatsnew/3.9.html から、Python3.9の主要な新機能を紹介します。 辞書のマージ演算子¶2つの辞書オブジェクトを| 演算子で併合して、 一つの新しい辞書オブジェクトを作成できるようになりました。 PEP 584 -- Add Union Operators To dict 2つの辞書オブジェクトの和から、新しい辞書オブジェクトを作成します。

    Python 3.9の新機能 - python.jp
    mickn
    mickn 2020/09/29
  • 1