1

私が定義した関数については心配していませんが、組み込み関数またはespについては心配していません。インポートされたモジュールからのもの。基本的に、これらのアドバイスは引き続き適用されますか?

http://wiki.python.org/moin/PythonSpeed/PerformanceTips#Avoiding_dots ...

http://wiki.python.org/moin/PythonSpeed/PerformanceTips#Local_Variables

ここでもPyPyのJITが役に立ったと思いますが、Linuxクラスターで実行する必要があります(私のソースはすでにPy3k用です)。

4

1 に答える 1

4

はい。正確なバージョンはそれほど重要ではありません。これらの最適化はすべて、一般的なケースの単純で効率的な実装を禁止するセマンティクスを備えた言語機能の使用を最小限に抑えることになります(JITコンパイラーは特定のケースに対してより良いコードを生成できますが、これはすべてインタープリターが気にします)。具体的には:

  • 属性ルックアップは、ハッシュテーブルルックアップ(O(1)で償却されますが、大きなOがすべてではありません)の作成、長い(ビルトインの場合はそれほど多くありません)継承チェーンの作成、呼び出しなど、かなり凝ったアルゴリズムに従います。その他の記述子(プロパティ、バインドされたメソッドの取得)。可変(特にローカル、以下を参照)ルックアップは、比較すると非常に単純であり、問​​題のオブジェクトがすでにスタックの最上位にない限り、必要なバイトコード命令は少なくなります。
  • ローカル変数はコンパイル時に列挙できますが(スタックを使用するとある程度効率的な実装が可能になります)、グローバルはモジュールオブジェクトへの参照を持っている人なら誰でもいつでも追加および削除でき、文字列を動的に使用することもできます(ハッシュテーブルを使用する必要があります)彼ら)。
于 2011-09-10T19:54:43.637 に答える