ホームページ >バックエンド開発 >Python チュートリアル >Python のローカル変数は、グローバル、属性、スロットに比べてどれくらい優れていますか?
あるいは、ローカル変数と比較して他の変数はどれくらい悪いですか?
大事なことは何ですか?
一部の記事では、Python プログラマーに対し、頻繁に使用されるローカル変数 (参照されるだけで変更されない場合でも) を使用するようアドバイスしています。
たとえば、以下は「Making Python Programs Blazing Fast」からの 2 つの引用です:
「実際には、関数内のローカル変数 (最速)、クラスレベルの属性 (例: self.name - 遅い)、およびグローバル、たとえば time.time のようなインポートされた関数 (最も遅い) の間でも、検索速度に違いがあります。 。」
「属性にアクセスしないでください
」プログラムの速度を低下させるもう 1 つの原因は、オブジェクト属性にアクセスするときに使用されるドット演算子 (.) です。この演算子は、getattribute を使用した辞書検索をトリガーします。これにより、コードに余分なオーバーヘッドが生じます。 「
また、これらが唯一の可能性ではありません。以下の違いについてはどうでしょうか:
これらすべてを 1,000,000 回の反復でループ内で使用してテストしましたが、内部の反復ごとの作業は最小限でした。クラス外の関数の関数属性をテストするために使用される関数を除き、関数はすべてクラスのメソッドでした。
典型的な関数は次のような形式でした:
def testINSA(self): s=0 for i in range(10000000): s+=self.INSA # what is after the = differs in each function. return s
すべてのコードはこの投稿の下部にあります。
| | | | Relative | | Where | Time | Rate | Performance | | LV Local Variable | 1.92 | 0.5208 | 100% | | GV Global Variable | 1.99 | 0.5020 | 96% | | ISA Instance Slotted Attribute | 2.09 | 0.4789 | 92% | | CA Class Attribute | 3.12 | 0.3204 | 62% | | INSA Instance Non-Slotted Attribute | 3.28 | 0.3051 | 59% | | FA Function Attribute | 3.49 | 0.2865 | 55% | | MA Method Attribute | 6.29 | 0.1589 | 31% |
説明:
パフォーマンスを比較するときは、1 km あたりのリットル数や計算あたりの秒数ではなく、ガロンあたりのマイル数や 1 秒あたりの計算数など、常に (実績 / リソース) を比較してください。
はい、ローカル変数が最も高速です。
3 つのグループに分類されたさまざまなタイプの変数のパフォーマンス。
驚くべきことに、一般通念と比較すると、グローバル は 2 番目に優れており、クラス内のスロット付きインスタンス属性よりも優れています。もう 1 つの驚きは、メソッド属性が最悪であることです。
def testINSA(self): s=0 for i in range(10000000): s+=self.INSA # what is after the = differs in each function. return s
以上がPython のローカル変数は、グローバル、属性、スロットに比べてどれくらい優れていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。