のために最適化私はPyPyの下にいくつかのPythonコードを実行していることだし、それを最適化したいと思いはPyPy
(これはStatistical profiler for PyPyのフォローアップです)。
Pythonでは、どの正確な行が減速の原因であるかを知り、それらを回避しようとすると、statprof
またはlineprofiler
を使用します。しかしPyPyでは、PyPyがいくつかの行を最適化するので、どちらのツールも実際の結果を実際には報告しません。私はまた、報告された機能のどの部分がボトルネックであるのかを調べるのが非常に難しいので、cProfile
を使用しないことをお勧めします。
今後の進め方に関するヒントはありますか? PyPyの下でうまく動作する別のプロファイラでしょうか?一般的にPyPyのPythonコードを最適化する方法は?
あなたの提案は何ですか? –
PyPyの実際の動作を考えれば、私はcProfileを使うことを提案しました。 2番目の提案は、コードのパフォーマンス特性を低レベルで理解する必要がある場合は、JitViewerを使用することでした。 – jlund3
フローグラフの変換は、インタプリタ自体を実装するRPythonコードをコンパイルして最適化するときに適用されます。Pythonコードではありません。これらの変換は、CコンパイラがCPythonインタプリタのCコードに適用する変換と同等であり、エンドユーザのPythonコードとは何の関係もありません。 PyPyのJITはあなたが話している問題の種類を提示します。ホットループは、アセンブリコードの複数の異なるブロックにJITコンパイルされる可能性が高いため、パフォーマンスを個別のPythonステートメントに厄介なものに戻すことができます。 – Ben