2017-01-17 21 views

答えて

4

@profile <expression>はおそらくあなたが望むことをするでしょう。しかし、これを行うにはさまざまな方法があります。

利用可能なプロファイリング機能のほとんどはhereです。

さらに一般的なガイドはhereです。バックトレースが何を意味するのか、そしてアウトプルをコントロールする方法を説明します。また便利なのはProfileView.jlパッケージです。

* NB:Profileは「サンプリング」プロファイラを実装しています(コードのどこにあるか、たとえば1msの場所をチェックします)。その理由と欠点についてはガイドで説明していますが、ほとんどすべてのユースケースが必要です

4

翻訳された言語(Python、Matlab)とコンパイルされた言語(Julia)をプロファイルするのはどれほど簡単で便利ですか。特に、記述するプロファイリングの種類には、コードの "インスツルメンテーション"が必要です。つまり、コードの各行の前後に余分な文(クロックを読む)が挿入されます。これらの余分なステートメントはオーバーヘッドを追加しますが、遅いインタープリター言語ではこのオーバーヘッドは通常管理しやすくなります。 Juliaのような高速言語では、コンパイルされたコードを "壊す"ことを避けるためにできることをすべて実行することを望んでいます。コンパイラは、追加されたインストルメンテーションによって破壊される最適化をしばしば行います。真のパフォーマンスコストの写真。

実際に計測プロファイラを使用する場合は、実行時間の行ごとの分析を行うより古いIProfileがあります。しかし、代わりに組み込みのサンプリングプロファイラを使用することを検討してください。それには多くの利点があり、私はIProfileが真により有用な状況に直面したことはありません。

サンプリングプロファイラは、コードを変更しません。プロファイルしていないときに実行するコードとまったく同じコードを実行しています。代わりに、現在の実行ポイントの「スナップショット」を定期的に取得します。同じポイントが何度も何度も繰り返されると、ボトルネックの1つになりそうです。これは通常、コードを最適化するために必要なすべての情報です。

関連する問題