14

PyPyのJITは、PythonコードをCPythonよりもはるかに高速に実行させることができます。JITコンパイラによってより適切に最適化できるコードを作成するための一連のガイドラインはありますか?たとえば、Cythonは静的コードをC ++にコンパイルでき、効率的なコードを作成するためのガイドラインがあります。PyPyの一連のグッドプラクティスはありますか?PyPyプロジェクトには、他の動的言語用に独自のJIT対応インタープリターを作成する際にヒントを含めるためのガイドラインがあることは知っていますが、それは、単にインタープリターを使用しているフレームワークのほとんどのエンドユーザーには関係ありません。私が疑問に思っている質問は次のとおりです。

  1. スクリプトを関数にパッケージ化する
  2. 変数を明示的に削除する
  3. 変数型を与える、または示唆する可能な方法
  4. ループを特定の方法で書く
4

1 に答える 1

13

BitBucketのPyPywikiには、 JITの使いやすさに関するセクションがあります。一部のブログ投稿では、PyPyでコードを高速に実行するための詳細なアドバイスが提供されていますが、フレームの解釈/実現を強制しない慣用的なコードは高速である必要があり、そうでない場合はバグであるという考えがあります。

3の場合、いくつかの「assert x> 0」または同様のステートメントが役立つ可能性があることは知っていますが、それをどこで見たかは覚えていません。また、4に関連するループ内の条件付きパスのリファクタリングに関する提案もいくつか見たと思います(編集:これは今では時代遅れのようです)。

これは、いくつかの関連する議論のあるスレッドです。JITがjitviewerを使用してコードでどの程度うまく機能しているかを確認できますが、多少高度です。Freenodeで#pypyに参加すると、jitviewerと特定のコードのヘルプが得られます。

于 2011-03-15T21:37:35.860 に答える