2011-01-15 5 views
0

ファイルを読み書きするための割り込みを呼び出す8086個のアセンブリコードがあります。私はTASMを使ってプロジェクトをリンクしてビルドしています。実行に要する時間はどのようなものがありますか?私はハードドライブの読み込み時間を待っているなら、クロックサイクルを数えることはうまくいかないと思う。8086アセンブリ:コードの実行時間の決定?

EDITは:ソフトウェアの推奨事項については、私はあなたがOProfileのか、インテル®VTuneのようなプロファイラを使用するか、または直前に、あなたの関数の後gettimeofdayを呼び出すことができます

+0

Win7で実行するDOSプログラムを作成していますか? – Gabe

+0

私はそれが速度の可能性を示すためにAssemblyでアルゴリズムを書いています。プラットフォーム、Windows 7は、ちょうど私のコンピュータが動いているものです。それはコンセプトプログラムの証明のようなものです。 –

答えて

1

これは、どれだけ正確に取得したいのか、どれくらいのトラブルを抱えているかによって異なります。

ファイルを読み書きするために割り込みを呼び出すとします。私はあなたが古いINT 21H割り込み関数をやっていると仮定します。 INT 21H機能2Chは時刻を約5/100秒に正確に返します。詳細については、http://spike.scu.edu.au/~barry/interrupts.html#ah2cを参照してください。

Windows API関数を呼び出すことができる場合は、QueryPerformanceCounterに電話して、時間を計りたいコードの先頭にティックカウントを得ることができます。その後、関数をもう一度呼び出し、最後から開始点を減算し、戻り値をQueryPerformanceFrequencyの戻り値で除算すると、それが得られます。

もちろん、64ビットの算術演算が必要です。

GetSystemTime API関数を呼び出し、SYSTEMTIME構造体に値を設定して渡すことができます。または、コンピュータ起動後のミリ秒数を返すtimeGetTimeを呼び出すことができます。あなたは49日後にロールオーバーするので、これに注意する必要があります。

他の方法もあります。しかし、INT 21H関数を呼び出す場合は、関数2CHを使うのが最も簡単です。

2

Windows 7を実行していることを伝える必要があります。

私は通常、インテルVTuneパフォーマンスプロファイラをcalltreeで使用しています。コードに費やされた時間と機能の合計時間を表示できます。

+0

+1また、タイマ割り込みを呼び出して、返された値を保存し、ファイルに読み書きし、再度その割り込みを呼び出して値を減算することができます。 – BlackBear

0

RDTSC命令は非常に正確なタイミング情報を提供しますが、最新のOSやCPUでは少し落ちます。詳細については、Wikipediaのページ(またはGoogleのRDTSC)をご覧ください:http://en.wikipedia.org/wiki/Time_Stamp_Counter 可能であれば、Win APIを使用してQueryPerformanceCounter/QueryPerformanceFrequencyを使用するとより安全ですあなたは非常にきめ細かなタイミングが必要かもしれないと思う?)。

また、VTuneとは異なり、AMD CodeAnalystは無料ですので、こちらもチェックしてください。

関連する問題