• 締切済み

実行速度計測アプリケーション(DLL単位)などありますか?

ご質問させて頂きます。 現在、手前のアプリケーションの実行速度が悪化しておりまして、 どのDLLの処理で時間がかかっているのかを計測しようと考えております。 これまで処理時間の計測を行ったことがなく、 Debuggerで出来るのか、そもそも無理な話なのかもわからない状況で 大変申し訳ありませんが、該当するような計測手段をご存知でしたら、ご教授願います。 計測したいことは以下の通りです。 [環境] Windows XP SP2 VC++ [計測内容] 単体アプリケーションに対する  ・メモリ使用量  ・各DLL単位の処理時間  ・可能であれば計測結果をグラフ表示 何卒、宜しくお願い致します。

みんなの回答

  • t_nojiri
  • ベストアンサー率28% (595/2071)
回答No.1

パフォーマンスモニタでメモリの監視、グラフ表示は出来ますけど、単体アプリの処理時間出したかったら、その処理ごとにログ出力埋め込んで、デッバグした方が良いのでは?http://d.hatena.ne.jp/kasei_san/20070727/p1

KEN16T
質問者

お礼

早速の回答ありがとうございます。 確かにその通りなのですが、上述するように単体アプリ用の パフォーマンスモニタリングソフトのようなものがあれば、 至極簡単かと思い、ご質問させて頂きました。 ひとまずご回答頂いた手段で検討してみたいと思います。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VC++とアプリケーション上の実行の違い

    VC++で作ったプログラムをデバッガ上で起動した場合と、ビルドにより出来た実行ファイルを直接起動した場合とでは、違いがあるのでしょうか? 具体的にはデバッガ上でプログラム中止時にアクセス違反の例外がでていたのですが、動作は正常だったため、試しにアプリケーションから直接起動したところ、処理速度がかなり落ちてしまいました。勿論例外の警告も出ませんでした。 その後デバッガ上で起動しても同様に処理速度が落ちます。 アクセス違反の例外が出ているアプリケーションをVCを通さず実行するとPC自体の設定か何かを壊してしまったりするのでしょうか? ちなみにアプリケーションは動画の制御であり、従来はコミットチャージがPCメモリの容量1.5GBまで終始達していたのですが、処理速度が遅くなってからはVCのメインメモリ使用量255MBまでしか行かなくなりました。映像出力用のメモリかなんかが、割り当ててもらえなくなったりしてるのでしょうか。 ちなみに仮想メモリはキャンセルしています。

  • DLLが LoadLibrary() でロードされたか判断できますか

    VC++6.0でDLLを作成しています。 アプリケーションが自分のDLLを LoadLibrary()でロードしたのか、 LIBリンクでロードしたのか、判断はできるでしょうか。 DLLの処理の中で、LoadLibrary()でロードされた場合と LIBリンクでロードされた場合の処理を分けたいのが目的です。 (LIBリンクの場合、デタッチ時にはメインのスレッドしか動作しないため) <補足> 正式にはどう呼ばれているか解らないのですが、「LIBリンク」は VCの設定でリンクするLIBを指定し、アプリケーションでは DLLが提供する関数名を記述する方法を意味します。

  • VC++.NET DLLからのダイアログの表示

    こんばんは。 VC++.NETでDLLを作成しました。 内容はダイアログを表示させるだけの単純なもので DLLの種類はMFC拡張DLLで作成しました。 (CDIALOGを継承したクラスTESTDIALOGのコンストラクタ、デストラクタがあるだけのもの) これをテスト用の単純なMFCアプリケーションで呼び出したところ ダイアログを表示させることができましたが 別の複雑なアプリケーション(DLLからDLLを呼ぶなどしている)で 呼び出したところダイアログが表示されません。 コンパイルエラーなどもでないし 何がいけないのか分かりません。 呼び出し側ではメニューにイベントハンドラを作ってそこで TESTDIALOG dlg; dlg.DoModal(); としているだけなのですが・・・ (デバッガで追ったところMFCのdlgcore.cppのCDialog::DoModalの m_lpDialogTemplateNameが不適切なptrとなる辺りに原因はありそうなのですが何故そうなるのかわかりません。) どなたかダイアログが表示されない原因がお分かりになる方 よろしくお願いします。

  • 処理能力計測について

    現在処理能力を計算するプログラムを組んでいます。 time_t start,end; : start=time(NULL); 時間を計測したい処理 end=time(NULL); printf("time %.0f s\n",difftime(end,start)); このように書いているのですが、出力は秒単位になります。もっと細かい単位で計りたいのですが、どうしたらよろしいでしょうか? よろしくお願いします。

  • VB6で正確なミリ秒を計測したいのですが

    VisualBasic6で処理の時間を計算したく、正確な(ミリ秒単位?)計測ができる関数を探しています。 長さは最長10日まで対応しているものはありますか? できれば、1/1000秒以下が計れるものです。

  • MySQLのチューニングについて

    チューニングについて質問です。 1. SQLの純粋な実行速度を知るにはどうしたらよいか 2. SQLの叩かれる回数が多い場合にレスポンスが遅くなるのはどう対応すればよいか 1については、純粋に単体での実行時間が知りたいのですがSQLのキャッシュが残っているせいか、高速に処理されてしまうために、なかなか正確な時間が分かりません。 どのようにしたら単体での実行速度を計測できるのでしょうか。 2については、SQL単体ではなかなかの速度が出せているのに、そのSQLが短時間に大量に呼び出される場合に、サーバの負荷があがり、レスポンスが遅くなってしまう場合はどう対処すればよいのかを聞きたいです。 よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • C言語で作ったプログラムの処理時間を計測するには

    C言語でいくつかのプログラムを作り、それぞれのプログラムの処理時間を計測し、比較したいと考えているのですがどのようにしたらいいのでしょうか?(0.1秒単位なので自分で計測するのはほぼ不可能です) 検索した結果 http://kzk9.net/column/time.html というサイトに辿り着きましたがよく理解できませんでした。 よろしくお願い致します。

  • VC++アプリケーションフォームにDLLをリンク

    単純なC++などは適当に使えるのですが、マルチスレッドのプログラムについては初心者です。 VC++2010ExpressEditionのアプリケーションフォームを用いて ボタンを押すと、テキストに入力した数値をDLLの関数に送り、その計算結果を、ラベルに表示する、という単純なプログラムを作成しています。 DLLを利用しないで、Form1内に計算式を作った場合には、正常に動かすことができます。 しかし、DLLの関数を利用する方法がわかりません。 DLLを呼び出すようにプログラムを書いても、ビルドするとエラーが出ます。 インターネット上を30時間位いろいろ調べて試したのですが、分かりませんでした。 もう限界になりましたので、ここに投稿しました。 解決方法を教えて頂けますよう、お願い致します。 DLLは下記のような単純なもので、Sample.cppとSample.defで構成されています。 //+--- Sample.cpp ---+ #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #include <windows.h> #include <stdlib.h> #include <stdio.h> //---- #define ABC_EXPFUNC __declspec(dllexport) //+------------------------------------------------------------------+ BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved) { //---- switch(ul_reason_for_call) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } //---- return(TRUE); } //+------------------------------------------------------------------+ ABC_EXPFUNC double __stdcall SecretFunc(double a, double b) { double c = a + b; return(c); } //+--- Sample.def ---+ LIBRARY Sample EXPORTS SecretFunc

  • WINWORD.EXE AirVm.exe(KERNEL32.DLL)

    昨日、W97M_MELISSAとMcAfeeからメッセージが出力されて、該当ファイルが削除されたのですが、やはり起動時にはメーラーが起動しエラーメッセージを出力し、終了時にはWinword.exeがプログラムの終了を行います。また、今日は起動時にAirVM.exeがアプリケーションエラーとなりました。メッセージは「ハンドルされていない例外はAirVM.exe(KERNEL32.DLL)にあります。」です。ホームページを見ているだけで、デバッガが開きこのメッセージが出力されることがあります。これはウィルスでは無いのでしょうか。

  • USB の通信速度計測(パフォーマンスカウンタ使用)について

    こんにちは。 Windows で USB の通信速度を計測する GUI アプリを作成しています。 質問ですが、計測するにあたって USBアナライザ(LE-620HS)の結果とアプリの結果が異なっており、その理由を教えていただきたいです。 環境は、ターゲットデバイス(SH7045、M66590FP、エンドポイントバッファ512Byte)、デバイスドライバ(KMDF)、PC(WinXP SP3、Pentium D 3.19GHz、メモリ3GB)、アプリ(VC9.0 MFC)となります。 また以下に示すコードはアプリのメインスレッドではなく、データ受信を行うための、別スレッドとなります。(受信スレッド) 2048Byte のデータを Bulk IN したとき USBアナライザでは「40us」、アプリでは「400us」と 約10倍程度、差があります。 アプリの計測コードはパフォーマンスカウンタを使用しています。 LARGE_INTEGER nFreq,nBefore,nAfter; ::ZeroMemory( &nFreq, sizeof( nFreq ) ); ::ZeroMemory( &nBefore, sizeof( nBefore ) ); ::ZeroMemory( &nAfter, sizeof( nAfter ) ); QueryPerformanceFrequency( &nFreq ); QueryPerformanceCounter( &nBefore ); // 計測データを受信 // この関数は自作DLLからの呼び出しです。内部で DeviceIoControl 使用。他の複雑な処理はありません。 readData( 2048バイト受信 ); QueryPerformanceCounter( &nAfter ); DWORD dwTime = (DWORD)((nAfter.QuadPart - nBefore.QuadPart) * 1000 * 1000 / nFreq.QuadPart ); # 別スレッドでパフォーマンスカウンタを使用することが問題なのでしょうか?? 以上となります。 ご教授いただければ幸いです。

AOMEI Backupperの使い方とは?
このQ&Aのポイント
  • AOMEI Backupperは、無料版を使用したノートへのインストール方法やSSDへの保存方法について教えてください。
  • ブータブルメディアの使い方やバックアップ方法についても教えていただけますか?
  • また、複数のバックアップ方法や異なるフォルダーへのバックアップについても教えてください。
回答を見る