コンピュータプラクティスⅠ 第7回

コンピュータプラクティスⅠ
性能評価
水野嘉明
本日の内容
 性能評価
応答時間と実行時間、起動時間の測
定
 実験レポート R2
実験1: 応答時間の測定 (前回実施)
実験2: ツールの応答時間
実験3: 起動時間の測定
課題: バッチファイルのコマンド
2
プログラム実行の仕組み (1)
 ソースファイルは、コンパイル&
リンクされて実行可能な形式となる
ソース
ファイル
コ
ン
パ
イ
ル
実行可能
ファイル
オブジェク
トファイル
ライブラリ
ライブラリ
リンク
一度に行うことができる
3
プログラム実行の仕組み (2)
 プログラムは、メモリに読み込まれて
(ロードされて)から実行される
OS
実行可能
プログラム
補助記憶装置
(ディスク)
4
プログラム実行の仕組み (3)
 ネットワーク経由でロードされること
もある
サーバ
OS
実行可能
プログラム
ネットワーク
5
プログラムの実行時間
 プログラムのロードには時間を要する
「起動時間」
 「実行時間」は、実行開始から終了まで
 両者の合計が「応答時間」
起動時間 + 実行時間 = 応答時間
6
応答時間の測定
7
応答時間の測定
 前回の実験1は、応答時間を測定した
起動時間 + 実行時間 = 応答時間
8
応答時間の測定
 前回の実験1は、応答時間を測定した
second.exe
FOR /L %%I IN (1,1,10000) DO L06Y01.EXE >NUL
second.exe
(1)開始時刻 (秒単位の時刻表示)
(2)測定対象(L06Y01.EXE)を繰返し実行
(3)終了時刻
9
応答時間の測定
 実験1にて、このバッチで測定した時間
(終了時刻ー開始時刻)は、
測定時間 = second.exeの応答時間
+ L06Y01.EXEの応答時間×N
(前頁の例では N=10000)
10
応答時間の測定
前記の式を変形すると、
L06Y01の応答時間 =
(測定時間 - secondの応答時間)/N
Nが十分大きければ
L06Y01の応答時間≒測定時間/N
11
問題
 Nがいくつくらいならば「十分大きい」
と言えるのか?
10,000? 100,000? 1,000,000? ・・・
 「十分大きい」と言うための条件は?
求めたい有効数字桁数による
⇒ 有効桁以下にしか影響
しなければOK
12
実験2
 second.exe
の応答時間を測定せよ
有効桁数は2桁とする
 得られた結果から、前回の実験1の
結果についても考察せよ
13
実験2
 ヒント
実験1と同様のバッチファイルにて
測定する
L06Y01.EXEではなく second.exe
を計測する
TIMEコマンドによる計測は不要
second.exeにて second.exeを計測
14
実行時間の測定
15
実行時間の測定
 次は、実行時間を測定する
起動時間 + 実行時間 = 応答時間
16
実行時間の測定
起動時間 + 実行時間 = 応答時間
 起動時間を除いた「実行時間」を測
定するには
 プログラム中の測定対象コードを
time() 関数ではさみ、ラップを計測する
17
実行時間の測定
int
{
main(void)
:
time(&t0);
for(i=0; i<N; i++){
// 対象コード
}
}
time(&t1);
lap = t1 – t0;
:
 対象コードを
time()関数ではさ
み、開始時刻と終
了時刻を求める
 必要に応じて繰り
返す
18
実行時間の測定
 対象コードは、関数呼び出しとする
対象プログラムの main()を、適当な
名前に置き換える
測定用プログラムに埋め込み、繰り
返し呼び出す
水野のサイトの「【付録】実行時間
測定ツール (measuer.cpp)」を参照
19
演習
 次ページの簡単なプログラムの実行時
間を、有効数字2桁まで測定せよ
20
演習
簡単なプログラム
#include <stdio.h>
#include <time.h>
void main() {
int c=0, i;
}
for(i=1; i<=1000000; i=i+1) {
c = c + 1;
}
21
起動時間の測定
22
起動時間の測定
起動時間 = 応答時間 - 実行時間
 応答時間、実行時間は、ともに誤差を
含む測定値である。
演算による精度の変化に注意する
必要がある
23
演算による精度の変化 (復習)
 例)
1.2×10ー2 – 3.4×10-3
1.2 ×10ー2
-) 0.34×10ー2
0.9 ×10ー2
有効数字の桁数に注意すること
誤差範囲は広がっている
24
実験3
 前回のプログラム(付録A
= L06Y01)
の 起動時間を測定せよ
有効数字2桁
 ヒント
応答時間と実行時間から求める
必要な有効数字を得られるように、
繰り返し回数を調整する
25
課題
 プログラムの応答時間や実行時間を
測定する方法には、他にどのような
方法があるか調べよ
 それらの方法の特徴や長所・短所等
について、考察せよ
26
実験レポート
 前回の実験1、本日の
実験2、実験
3、課題を 実験レポートR2として提
出せよ
表題は「時間の測定と性能評価」
レポートの形式は、前回のスライド
資料を参照
27
実験のねらい
以下のような実験の狙いに注意して、
レポートを書くこと
 実験1
測定ツールの精度の差が、実験
にどのような影響を与えるか
28
実験のねらい
 実験2
測定ツール(second.exe) の応答
時間は、実験1の測定にどのよう
な影響があったか (なかったか)
 実験3
実行時間を測定する
応答時間、実行時間、起動時間の
関係を理解する
29
実験を開始して下さい
30
次回の予定
 「比較実験」
二つのプログラムの比較
パラメータを変化させての比較
お疲れ様でした
31