ファイルの読み取りと書き込みのために割り込みを呼び出す 8086 アセンブリ コードがいくつかあります。プロジェクトのリンクとビルドに TASM を使用しています。実行にかかる時間を計るには、どのようなオプションを利用できますか? ハードドライブの読み取り時間を待っている場合、クロックサイクルのカウントは機能しないと思います。
編集: ソフトウェアの推奨事項については、Windows 7 を実行していることをお伝えしておく必要があります。
ファイルの読み取りと書き込みのために割り込みを呼び出す 8086 アセンブリ コードがいくつかあります。プロジェクトのリンクとビルドに TASM を使用しています。実行にかかる時間を計るには、どのようなオプションを利用できますか? ハードドライブの読み取り時間を待っている場合、クロックサイクルのカウントは機能しないと思います。
編集: ソフトウェアの推奨事項については、Windows 7 を実行していることをお伝えしておく必要があります。
oprofile や VTune などのプロファイラーを使用するかgettimeofday
、関数の前後に呼び出すことができます。
私は通常、calltree で Intel VTune パフォーマンス プロファイラーを使用しています。コードに費やされた時間と関数の合計時間を表示できます。
それは、あなたがどれだけ正確になりたいか、そしてあなたがどれだけのトラブルを経験したいかによって異なります.
ファイルの読み取りと書き込みのために割り込みを呼び出していると言います。古い INT 21H 割り込み関数を実行していると思います。INT 21H 機能 2Ch は、約 5/100 秒の精度で時刻を返します。詳細については、 http://spike.scu.edu.au/~barry/interrupts.html#ah2cを参照してください。
Windows API 関数を呼び出すことができる場合はQueryPerformanceCounter
、時間を計るコードの先頭で呼び出してティック カウントを取得できます。後で関数を再度呼び出し、末尾から先頭を減算し、結果を からの戻り値で割ると、それQueryPerformanceFrequency
が得られます。
もちろん、それには 64 ビット演算が必要です。
API 関数を呼び出して、データが入力される構造体をGetSystemTime
渡すことができます。または、コンピュータが起動してからのミリ秒数を返すSYSTEMTIME
を呼び出すこともできます。timeGetTime
これは 49 日後に繰り越されるため、注意が必要です。
おそらく他の方法もあります。しかし、最も簡単なのは、INT 21H 関数を呼び出す場合、関数 2CH を使用することです。
RDTSC 命令は非常に正確なタイミング情報を提供しますが、最新の OS や CPU では少し低下します。詳細については、ウィキペディアのページ (RDTSC の 場合はGoogle) を参照してください: http://en.wikipedia.org/wiki/Time_Stamp_Counterより多くのオーバーヘッド - 非常に細かいタイミングが必要なように聞こえるので、おそらくあなたの場合には多すぎるでしょう?)。
VTune とは異なり、無料の AMD CodeAnalyst もチェックしてください。