関数内での Python コードのパフォーマンスの向上
この質問では、関数内に配置すると Python コードの実行が大幅に高速になる理由を調査します。提供されたコードでは、ループが広範囲にわたって反復され、ループが関数内に含まれるかどうかによって実行時間が大幅に異なります。
パフォーマンスの違いの原因
パフォーマンスの違いは、コードに対して生成された基礎となるバイトコードから生じます。関数内では、バイトコードは STORE_FAST 命令を使用してローカル変数に値を割り当てます。このプロセスは最適化されており、通常、グローバル変数または非ローカル変数に値を割り当てるために使用される STORE_NAME 命令を使用するよりも高速です。
バイトコード分析
関数内のループは次のとおりです:
SETUP_LOOP 20 (to 23) LOAD_GLOBAL 0 (xrange) LOAD_CONST 3 (100000000) CALL_FUNCTION 1 GET_ITER FOR_ITER 6 (to 22) STORE_FAST 0 (i) JUMP_ABSOLUTE 13 POP_BLOCK LOAD_CONST 0 (None) RETURN_VALUE
対照的に、関数の外側のループのバイトコードは
SETUP_LOOP 20 (to 23) LOAD_NAME 0 (xrange) LOAD_CONST 3 (100000000) CALL_FUNCTION 1 GET_ITER FOR_ITER 6 (to 22) STORE_NAME 1 (i) JUMP_ABSOLUTE 13 POP_BLOCK LOAD_CONST 2 (None) RETURN_VALUE
結論
関数内のループ用に生成されたバイトコードで STORE_NAME の代わりに STORE_FAST を使用すると、実行速度の向上に貢献します。これは、Python コードのパフォーマンスを向上させるためにバイトコード最適化手法を理解することの重要性を示しています。
以上が関数内で Python コードの実行が高速になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。