2013-05-08 13 views
8

仮想マシンが起動してから何個のPython仮想マシン命令が解釈されたかを読む方法はありますか?私はこれが(もし可能であれば)CPythonにのみ適用可能であることを理解しています。解釈されたPython命令の数を確認します。

+2

あなたが命令とはどういう意味ですか?コードの行?関数呼び出し?これは結局アセンブラではなく高級言語です。 –

+2

@JarosławJaryszew:私はVM命令を推測します。このような指示を数えることでPrologプログラムのプロファイリングを思い出しました。これは非常に便利でした。 –

+3

(興味深いことに、Google検索で「cpythonカウントの命令」が4番目の位置に表示される:http://en.wikipedia.org/wiki/Holy_Hand_Grenade_of_Antioch) –

答えて

1

簡単にはありません。パフォーマンスを測定する標準的な方法は、one of the profiling modules availableです。まだ...

CPython 2では、PyThreadState構造体を読み取ることによって、拡張モジュール(つまりCコード)から現在のスレッドについてのおおよその測定値を得ることができます。 tick_counterと呼ばれるフィールドがあり、のチェックインターバルを掛け合わせると、バイトコード命令の数が実行されます。つまり、インタープリタのメインループの反復回数です。

しかし、実行中にチェック間隔が変更される可能性があるため、この値は正確ではありません。 CPythonの2.7.4のための

興味深いリンク:

CPythonの3.2 tick_counterは、その本当の意味を失ったので、あなた」はトレースを強制的に使用するまたはプロファイリングは、すでに述べた:

+0

に答える前に、コメントをチェックしたべきバイトコード命令の数はこれまでに、この技術を用いて測定されるように減少することはできますか? –

+0

私はそれが依存すると思います'tick_counter'だけが増加するので、実行中の非常に長いプログラムでは、オーバーフローし、おそらくラップアラウンドし、符号付き整数なので、それは最終的に否定的になるでしょう。 – C2H5OH

関連する問題