問題タブ [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.
php - PHP コードのプロファイリング
PHP の各関数と PHP の各ファイルの実行にかかる時間を特定する方法を見つけたいと思います。「ラフスポット」を見つけようとしている古いレガシーPHPアプリケーションを持っているので、どのルーチンとページのロードに非常に長い時間がかかっているかを客観的に特定したいと思います。
これを可能にする既製のツールはありますか?それとも、マイクロタイムを使用して独自のプロファイリング フレームワークを構築しているのですか?
perl - Perl Web アプリをプロファイリングするにはどうすればよいですか?
Perl を使用する Web アプリに取り組んでおり、アプリの一部の高速化を検討する必要があります。
調査したい部分の特定の呼び出しのプロファイリングを開始すると思いました。-d:DProf myapp
Perl コードのプロファイリングについていくつか検索しましたが、残念ながら、見つかったもののほとんどは、コマンド ラインからPerl コードを実行する必要があると述べています。私のコードは Web アプリ内にあるため、これはうまくいきません。プロファイリングをApacheで動作させる方法を見つけましたが、残念ながら、プロファイラーから返された「最も使用された」モジュールはすべてCPANモジュールでした.Class::xyzなど.
プロファイリングしたいメソッドに「タイマー」コードを挿入して、これらのメソッドだけをターゲットにする以外に、良い方法を知っている人はいますか? テスト スクリプトを作成してプロファイリングすることも考えましたが、現在取り組んでいるコードの性質上、思った以上に多くの作業が必要になります。
apache-flex - Flex Post イベント画面の更新
今日、非常に奇妙なことを調査しているときに、このトピックに出くわしました。Flex アプリで特定の操作を行うと、レンダリングされるフレーム数が 12fps から最大 30fps に急増する可能性があります。ロードされたアニメーションが高速で再生され始め、GUI がロックアップし始めます。
私がFlex/Flashで読んだことはすべて、「フレームレートは最上位アプリで設定されたfpsに制限されている」という点を強調しているため、これらの余分なレンダリングが発生する唯一の方法は、それらを引き起こすいくつかのイベントによるものです(ステージのフレームレートに対するプログラムによる変更はどこでも行われません)。更新ロジックを ENTER_FRAME ハンドラーに配置した場合にのみ発生するため、何が起こっているのかを把握しようとしています。
仮説: 更新関数の何かが即時の画面更新をトリガーしています。これにより、別の ENTER_FRAME がすぐに発生します。これは、更新ループが呼び出され、別の即時の画面更新がトリガーされることを意味します...
これが要因である場合、GUI で使用される Flex コンポーネントがあります。これで次にどこに行くべきか本当にわかりません。
説明:
- 物事がスピードアップすると私が言うとき、これには 2 つの方法があります。
- まず、私の ENTER_FRAME ハンドラーがはるかに頻繁に呼び出されます。
- 次に、ループ アニメーションが組み込まれた Flash SWF をロードすると、突然速度が上がり、ばかげているように見えます。
- 私は updateAfterEvent を使用していません。この問題を調査しているときにのみ、これが存在することがわかりました。どうやら、Sprite サブクラスのいくつかのイベントは自動的にこれを呼び出しますが、それが根本的な原因なのだろうかと思います。
- 私はレンダリングを直接いじっていません。バックグラウンド アニメーションは、CS3 オーサリングからタイムラインが組み込まれているため、自動的に再生されます。更新機能は、DisPlayObjects の位置を変更したり、それらを追加/削除したりするだけです。
更新: stage.frameRate を出力するためにアプリにラベルを追加したところ、特定の時間に 12 から 1000 (最大許容値) に突然変化することがわかりました。ENTER_FRAME ハンドラーに行を追加してリセットするのは簡単でしたが、それは大きな助けにはなりません。また、これを行っても、レンダリングはすべて台無しです。特定のアクション (アラート ポップアップの表示など) によって、すべてが元に戻ります。残念ながら、setter プロパティにブレークポイントを設定するための Stage クラスのソースを表示できません。
Flex ローディングの「1000fps に設定」については非常に興味深いです。私たちが持っているのは、すべてが共通のインターフェースを提供するいくつかの Flex アプリケーションです。マスター アプリは、SWFLoader クラスを通じて必要に応じてこれらのモジュールをロードする役割を担います。ただし、読み込みプロセスでは読み込みの遅延がすでに考慮されています... SWF が読み込まれると、SystemManager からの APPLICATION_COMPLETE を待ちます。これが届いたら応募完了ではないでしょうか?
ruby-on-rails - Railsリクエストプロファイラーで使用するスクリプトを作成するための最良の方法は何ですか?
Railsscript/performance/request
スクリプトにはセッションスクリプトが必要ですが、このセッションスクリプトを生成するための最良の方法は何ですか?
linux - Linux でのプロファイル プログラムの速度
パフォーマンスを比較したいプログラムのバリエーションがいくつかあります。どちらも基本的に同じタスクを実行します。
Cとメモリですべてを行います。もう 1 つは外部ユーティリティを呼び出し、ファイル IO を実行します。
それらを確実に比較するにはどうすればよいですか?
1) 「time」を使用して「CPU の時間」を取得すると、system() を呼び出して IO を実行するための 2 番目のバリアントが優先されます。「システム」時間を「ユーザー」時間に追加しても、wait() でブロックされた時間はカウントされません。
2)サーバー上で実行され、いつでもCPUからプッシュできるため、それらをクロックすることはできません。サーバーがどのように利用されているのかわからないため、数千回の実験の平均化はソフトオプションです。これはクラスター上の VM であり、複雑です。
3) プロファイラーは、コードに費やす時間を与えてくれるので役に立ちません。この場合も、system() を実行するバージョンが好まれます。
これらのプログラムが消費するすべての CPU 時間を合計する必要があります。これには、ユーザー、カーネル、IO、および子が再帰的に含まれます。
これはよくある問題だと思っていましたが、まだ解決策が見つからないようです。
(times() で解決 - 以下を参照してください。皆さん、ありがとうございます)
java - Java/.Net プロファイラーに似た SQL Server プロファイラーはありますか?
Java/.Net アプリをプロファイリングして、パフォーマンスのボトルネックやメモリの問題を見つける方法が気に入っています。たとえば、メソッドごとの実行時間と呼び出し回数を含む呼び出しツリーを見ると、パフォーマンスのボトルネックを見つけるのは非常に簡単です。SQL Server には、ビューに依存する他のストアド プロシージャを呼び出すストアド プロシージャがあります。これは、他のメソッドを呼び出す Java/.Net メソッドに似ています。したがって、同じ種類のプロファイラーがここで非常に役立つようです。しかし、遠くを探しても一匹も見つかりませんでした。SQL Server またはその他の DBMS 用のそのようなツールを知っている人はいますか?
更新: SQL Server プロファイラーに関するご返信ありがとうございます。ただし、このツールは非常に限られています。スクリーンショットを見てください。
c++ - Windows 上のネイティブ C++ の優れたプロファイラーは何ですか?
ネイティブ C++ で使用するプロファイラーを探しています。もちろん無料である必要はありませんが、購入の決定にはコストが考慮されます。これは商用目的であるため、個人またはアカデミック ライセンスのコピーを使用することはできません。
私が探している主な機能は次のとおりです。
- プロセス レベルの指標
- コンポーネント レベルの指標
- 行レベルの指標
- マルチスレッドコードをサポート
- 使いやすさ
- 料金
- Visual Studio 2005 Professional のサポートが必要 (VS 2008 Professional のサポートが非常に望ましい)
Intel の VTune と Compuware の Devpartner Performance Analysis Community Edition を使用しました。
VTune は非常に強力に見えましたが、学習曲線は急勾配です。また、非常に「モジュラー」であるため、どの部品を購入する必要があるかを把握する必要があります。
DevPartner PACE は非常に使いやすく、すべての主要機能を提供しますが、45 日間の試用版のみです。ライセンス版 (Visual C++ BoundsChecker Suite の DevPartner) は 1 シートあたり約 1400 ドルです。
ネイティブ C++ の優れたプロファイラーとその理由は何ですか?
以下も参照してください。
.net - .NET の高解像度タイマー
コードの基本的なプロファイリングを行いたいのですが、C# の DateTime.Now の分解能が約 16 ミリ秒しかないことがわかりました。私がまだ見つけていない構造を維持するためのより良い時間があるに違いありません。
asp.net - ASP.NET 1.1 のパフォーマンスの問題
私は 1.1 アプリでいくつかのプロファイリングを行っており、問題を特定しました。この関数は、特定のページでロードするのに永遠に時間がかかっているようです:
ParserCacheItem System.Web.UI.TemplateControlParser.CompileAndGetParserCacheItem(String, String, HttpContext)
私はこれが何をするかについて運がなくても検索しました。この機能が何をしているのか誰か知っていますか?もし私が知っていれば、状況に光を当てるかもしれません。
ありがとう!?
java - Java アプリケーションでロードされたクラスの数でメモリ リークの可能性があります
私は最近、VisualVM を使用して作成している osgi Java アプリケーションのプロファイリングを開始しました。私が気づいたことの 1 つは、アプリケーションが (JMS 経由で) クライアントにデータを送信し始めると、ロードされるクラスの数が一定の割合で増加し始めることです。ただし、ヒープ サイズと PermGen サイズは一定のままです。データの送信を停止しても、クラスの数は決して減りません。これはメモリリークですか?ロードされたクラスをどこかに保存する必要があるためだと思いますが、アプリケーションを数時間実行しても、ヒープと permgen は増加しません。
プロファイリング アプリケーションのスクリーンショットについては、こちらを参照してください。