問題タブ [profiling]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Javaプログラムの特定の実行に関与したコード行を特定するにはどうすればよいですか?
IDE内にJavaプログラム(この場合はEclipse)があるとします。ここで、プログラムを実行し、ある時点でプログラムを終了するか、自然に終了するとします。
どの行が少なくとも1回実行され、どの行が実行されなかったかを判断する便利な方法はありますか(たとえば、例外処理や到達しなかった条件)。
この情報を手動で収集する方法は、デバッグを常に実行し、少なくとも1回は通過した一連の行を維持することです。ただし、すでにそれを行っているツールやプロファイラーはありますか?
編集:明確にするために:プログラムでこの情報にアクセスできる必要がありますが、必ずしもJUnitテストからアクセスできる必要はありません。
delphi - Delphi 用のプロファイラおよびメモリ分析ツール
最近、Delphi 4 から Delphi 2009 にアップグレードしました。Delphi 4 では、Primoz Gabrijelcicの GpProfile をプロファイラーとして使用し、Turbo Power の Memory Sleuthをメモリ分析とリークのデバッグに使用していました。どちらも私にとってはうまくいきました。しかし、今は Delphi 2009 で動作する新しいツールが必要です。
Delphi のプロファイリング/分析ツールのリーダーは、明らかにAutomatedQA の AQTimeです。彼らは最近、Atanas Soyanovの Memproof を手に入れました。これは優れた無料のメモリ分析ツールであり、その機能を AQTime に組み込みました。しかし、AQTime は個々のプログラマにとって非常に高価です。実際には、Delphi 2009 へのアップグレードよりも多くの費用がかかります。
私の質問は次のとおりです。現在のバージョンの Delphi でプロファイリングとメモリ分析を行うための、あなたが満足し、推奨している他の安価なオプションはありますか?
補遺: 初期の回答者は、Delphi に既に含まれている FastMM マネージャーがメモリ リークの検出に非常に優れていることを示しているようです。
では、ソース コードのプロファイリングに代わる良い方法はありますか?
私が興味を持っているのは、Michael Adolphによる ProDelphi で、コストは AQTime の 6 分の 1 以下です。使いますか?AQTime は 6 倍の価値がありますか?
補遺 2: AQTime と ProDelphi の両方の試用版をダウンロードしました。
AQTime は少し圧倒され、最初は少し混乱しました。それを接続するために必要ないくつかのトリックを見つけるのに数時間かかりました.
ProDelphi は、私が慣れ親しんでいた GpProfile と非常によく似ていました。しかし、そのウィンドウはごちゃごちゃしていてわかりにくく、GpProfile ほど良くはありません。
私にとって大きな違いは次のとおりです。
ProDelphi はコードを変更します。AQTime はそうではありません。コードを変更すると、何か問題が発生した場合にデータが破損する可能性がありますが、GpProfile での私の経験では、そのようなことは一度もありませんでした。AQTime のプラス 1。
ProDelphi では、最適化をオフにする必要があります。しかし、プロファイリングしたいのは、最適化がオンになっているプログラム、つまりその実行方法です。AQTime のプラス 1。
ProDelphi では、関数またはプロシージャまでプロファイルを作成することしかできません。AQTime は、個々の行に移動できます。AQTime のプラス 2。
ProDelphi には 20 のルーチンをプロファイリングする無料バージョンがあり、そのプロ バージョンの価格は 100 米ドル未満です。AQTime は 600 米ドルです。ProDelphi の場合はプラス 4。
これでスコアは 4-4 になりました。どう思いますか?
補遺 3: Primoz Gabrijelcic は、GpProfile を再び機能させることを計画しています。以下の回答のいくつかに対する彼のコメントを参照してください。彼はGabrとして StackOverflow に参加しています。
補遺 4: 結局、プロファイラーの解決策があるようです。以下で説明する Andre のオープン ソース asmprofilerを参照してください。
javascript - 関数の実行にかかる時間を測定する方法
実行時間をミリ秒単位で取得する必要があります。
私が最初にこの質問をしたのは 2008 年のことでした。そのとき受け入れられた答えは、 を使用する
new Date().getTime()
ことperformance.now()
でした。したがって、受け入れられた回答をこれに変更しています。
c++ - プラグインを使用する Qt アプリケーションのプロファイリング
Qt を使用して C++ で書かれた中規模のアプリケーションがあります。プロファイルを作成して、最もパフォーマンスの低いコードがどこにあるかを確認したかったので、すべてを .xml でコンパイルしました-pg
。
ただし、私のアプリケーションでは、QTPlugin メカニズムを使用して多くのプラグインを使用しています (プラグインごとのインスタンス オブジェクトの dlopen と dlsym に要約されます)。gprof にはプラグインの関数が含まれていないように見えます。
はい、プラグインもコンパイルされて-pg
います。すべてをプロファイリングするために何か特別なことはありますか? それとも、単純なものが欠けていますか?
c++ - Windows で (ネイティブ) C++ をプロファイリングするには、どのツールを使用しますか?
Window のプログラマーはネイティブ C++ コードをどのようにプロファイリングしますか? Unix/Linux には gprof [Evan に感謝]と valgrind (実際のプロファイラーではありませんが、個人的にはこれを使用しました) があり、最近は Mac と Solaris を使用しているため、dTrace に移行しました。以前の仕事のように、過去に Windows でプロファイリングする必要があったとき、私は Intel の vtune を使用しました。 Windows プログラマーが一般的に使用する標準 (無料の方が優れている) ツールは何でしょうか?
前もって感謝します
java - JBoss モニタリング / プロファイリング
サーバー EJB メソッドとして無数の「トランザクション スクリプト」プロシージャを使用するレガシー JBoss 4.0.4/EJB 2.1/PostgreSQL システムを使用していますが、それらの多くは、不適切なプログラミング手法 (毎回一時テーブルを作成するなど) により、実行時間が非常に遅く扱いにくいものになっています。等)。
JBoss (Aspect-Like) にプラグインして、リモート EJB メソッドの実行を監視し、開始時刻と終了時刻をキャプチャして、後でさらにプロファイリングできるものはありますか? アイデアは、システムで最も実行されるメソッドを可能な限り最適化し、新しいプラットフォームの代替案を調査することです。
performance - AQTime はどのようにそれを行いますか?
私は、パフォーマンスとメモリのプロファイラである AQTimeをテストして、Delphi アプリケーションのために多額の費用を費やす価値があるかどうかを確認してきました。
私が驚いたのは、アプリケーションのソース コードを変更したり、パフォーマンスに過度の時間を追加したりすることなく、ソース行レベルのパフォーマンス トレース (各行が実行された回数と行にかかった時間を含む) を提供できることです。デバッグ実行。
彼らがこれを非常に効率的に行う方法は、私が知らないいくつかのテクニック/テクノロジーがここで使用されているのではないかと思います。
コードを変更せずに行ごとに実行をキャプチャするために、彼らがどのような方法を使用しているか知っていますか?
非侵襲的な行ごとのチェックも行う他のプロファイリングツールはありますか?もしそうなら、それらは同じ手法を使用しますか?
.net - .NET オブジェクトのサイズを調べる
オブジェクトがラージ オブジェクト ヒープ(85,000 バイトを超える) に到達するオブジェクトの数を確認するために、オブジェクトがどれだけのメモリを必要とするかを調べようとしています。
int の場合は 4、long の場合は 8、各オブジェクトの参照型などの場合は 4 (または 64 ビットの場合は 8) を追加するのと同じくらい簡単ですか、それともメソッド、プロパティなどのオーバーヘッドがありますか?
winapi - win32 のカーネルでプロセスが時間を費やしている理由を調べる
WinXp VmWare セッションで vc8 C++ プロジェクトをコンパイルしています。RedHat VmWare セッションでは gcc3.2 よりもはるかに遅いので、タスク マネージャーを調べています。私のコンパイルプロセスの非常に大きな割合がカーネルで費やされていると言っています。それは私には正しく聞こえません。
Win32 の strace に相当するものはありますか? 少なくとも、どのカーネル関数が呼び出されているかの概要を教えてくれるもの。犯人として際立っている何かがあるかもしれません。
optimization - シミュレーション ツールをどのようにプロファイリング/最適化しますか?
過去にも断続的に、Easy Java SimulationsやNetLogoなどのシミュレーション ツールを使用しました。
「あなたがしなければならないことは」シミュレーションループを書くことだけです - グラフィックスなどはあなたのために処理されます。
しかし、実装の根性は水面下に隠されているため、これらのツールを使用して実行時間/モデリング速度を改善することは非常に困難であることに気付きました。
一般的に言えば、シミュレータ ツールの使用方法に関する優れたドキュメントがありますが、実行時間の改善に関するものは何も見つかりませんでした。
たとえば、根を見つけるためにニュートン法を実装しているとします。これは簡単なアルゴリズムですが、
- 使用するグラフィック アタッチメントの種類、または
- 選択されたその他のさまざまなオプション
シミュレーションはさまざまな速度で実行されます。
シミュレーションのデータの「最適な」表示を決定する方法はありますか?
そのようなツールを使用してモデリング/科学的プログラミングについてクラスを教える場合、私はこれを考えています。