アプリケーションの時間測定は、パフォーマンス測定の 1 つの目安となります。 time コマンドを使用して、プログラムのパフォーマンス情報が得られます。次の点を考慮して行ってください。
ユーザが誰もアクティブではないときに、プログラムの時間測定を行います。時間測定中、1 つまたは複数の CPU 集中型プロセスが起動していると、結果に影響します。
最も正確な結果を得るには、毎回、同じ条件でプログラムを実行するようにしてください。特に、同一プログラムの以前のバージョンと比較する際は注意してください。可能ならば、同じ CPU システム (モデル、メモリ、オペレーティング・システムのバージョンなど) で実行してください。
システムを変更する必要がある場合、両方のシステムでプログラムの同一バージョンの速度を測ります。こうすることによって、システムによる速度の違いを把握できます。
数秒以下で実行されるプログラムの場合は、数回測定し、正しい結果であることを確認してください。共有ライブラリをロードするようなオーバヘッドのあるプログラムは、短い時間に大きな影響を与えます。
実行プログラムの名前を指定して、time コマンドを使用すると、次の情報が得られます。
経過時間、実時間、または "ウォールクロック" 時間。これらは、合計 CPU 使用実時間よりも大きくなります。
CPU 使用実時間。システム、ユーザ実行の両方が表示されます。合計 CPU 使用実時間は、実際のユーザ CPU 時間とシステム CPU 時間の合計です。
例
次の時間測定の例では、サンプル・プログラムは、次のような行を表示します。
Average of all the numbers is: 4368488960.000000
Bourne* シェルを使用して、次のプログラム時間測定を行うと、合計 CPU 実時間が 1.19 秒 (ユーザ・プログラムの CPU 実時間 0.61 秒とシステムの CPU 実時間 0.58 秒の合計)、経過時間が 2.46 秒であることがレポートされます。
$ time a.out
Average of all the numbers is:
4368488960.000000
real 0m2.46s
user 0m0.61s
sys 0m0.58s
C シェルを使用すると、合計 CPU 実時間が 1.19 秒 (ユーザ・プログラムの CPU 実時間 0.61 秒とシステムの CPU 実時間 0.58 秒の合計) 、経過時間が 4 秒 (0:04) 、CPU 使用時間が 28% であることがレポートされます。
% time a.out
Average of all the numbers is: 4368488960.000000
0.61u 0.58s 0:04 28% 78+424k 9+5io 0pf+0w
Bash シェルを使用すると、合計 CPU 実時間が 1.19 秒 (ユーザ・プログラムの CPU 実時間 0.61 秒とシステムの CPU 実時間 0.58 秒の合計) 、経過時間が 2.46 秒であることがレポートされます。
[user@system user]$ time ./a.out
Average of all the numbers is: 4368488960.000000
elapsed 0m2.46s
user 0m0.61s
sys 0m0.58s
システム時間が大きい場合は、I/O に多くの時間がかかっている可能性があります。この場合、調査する必要があるかもしれません。
プログラムが多くのテキストを表示する場合は、time コマンドラインでプログラムからの出力をリダイレクトできます。プログラムの出力をリダイレクトすると、画面 I/O が減少するため、レポートされる時間が変わります。
詳細は、「time(1)」を参照してください。
time コマンドに加えて、実行時間を測定するためのルーチンを呼び出すようにプログラムを変更してみてください。例えば、SECNDS、DCLOCK、CPU_TIME、SYSTEM_CLOCK、TIME および DATE_AND_TIME などのインテル® Fortran 組込みプロシージャを使用できます。 詳細は、『Intel® Fortran Language Reference』 (英語) の「Intrinsic Procedures」を参照してください。