[CP1] 時間の測定

コンピュータプラクティスⅠ
時間の測定
水野嘉明
本日の内容
 プログラムの性能評価
 有効数字、測定精度
 プログラム実行時間の測定
 実験1
実験2、3、レポートは次回
2
プログラムの評価基準
 性能
(performance)
 機能 (function)
 再利用性 (reusability)
 安全性 (信頼性 reliability)
 維持性 (保守性
serviceability,maintenancebility)
3
性能の評価
 実行時間
行数や命令数は実行時間と強い
相関
 資源(resource: メモリやディスク容
量等)の消費量
4
物理量の測定
 物理量の測定においては、目盛りの
10分の1まで読む (アナログ時)
5
10
15
mm
12.3mm
 測定値には必ず誤差がある
12.3mmの 「.3」はあまり確かではない
12.3±0.05 の範囲を示すと考える
5
有効数字
 この測定値を
「12.3123mmだ!」 と
主張しても意味はない
5
10
15
mm
 「12.3」までが意味のある数字
= 有効数字
測定の精度を考慮した上で特にその桁の
数字に書くだけの合理的根拠があること
6
有効数字の表記
有効数字2桁
 「12」
と 「12.0」 は異なる
 12
⇒ 12±0.5 (11.5~12.5)
 12.0 ⇒ 12.0±0.05 (11.95~12.05)
有効数字3桁
 120 と書いてあったら?
1.2×101 1.20×101 1.20×102
(または 1.2×102 )と表記する
 各々
科学表記
7
有効数字の計算 (乗除)
 乗除の結果の有効数字は、元の有効
桁数の小さな方と等しい
1.23×102 × 3.4×103 = 4.182×105
= 4.2×105
有効数字2桁
8
有効数字の計算 (加減)
 加減算は、桁を揃えて計算してから、
一番粗い(有効数字の末位が最高の)
項に有効数字の末位を揃える
1.23×102 + 3.4×103
= 0.123×103 + 3.4×103
= 0.1×103 + 3.4×103
= 3.5×103
9
有効数字の計算 (加減)
 有効数字の桁数が、増えたり減ったり
することがある
特に桁落ちに注意する
1.234×102 - 1.233×102
= 123.4 - 123.3
= 1×10-1
有効数字4桁同士の演算の
結果が有効数字1桁に
10
有効数字の計算 (定数の扱い)
 測定値でない数値(定数など)は、有効
数字は無限桁数と考える
 π、√2などは、有効数字より1桁以上
大きい桁数を使用する
練習:球の半径が 2.674m(有効数字
4桁)と計測されたとき、表面積は
4πr2 = 4×3.1416×2.674×2.674
= 89.85 (m2)
11
有効数字の計算 (筆算)
 筆算するときは、計算の途中では有効
数字よりも1桁分だけ桁数の大きな数で
計算する
全桁計算し最後に丸める⇒面倒&ミスの
もと、センスが悪い
毎回丸める⇒有効数字が落ちるので 不可
12
有効数字の計算: 練習
 次の計算をせよ
{(2.234×5.67815)+100.9049}×4.60
2.234 × 5.67815 =
+ 100.9049 =
× 4.60 =
13
練習 解説
 不可な例
面倒&ミスのもと、
センスが悪い
2.234 × 5.67815 = 12.6849871
12.68498710 + 100.9049 = 113.5898871
113.5898871 × 4.60 = 522.51348066
= 523
2.234 × 5.67815 = 12.68
12.68 + 100.9049 = 113.58
113.58 × 4.60 = 522
精度が落ちる
14
練習 解説
本当は全桁数4桁の
12.68 だが、1桁増やす
2.234 × 5.67815 = 12.685
12.685 + 100.9049 = 113.590
113.590 × 4.60 = 523
本当は小数第2位までの
113.59 であるが,1桁増やす
15
測定精度
 測定器により測定精度は異なる
最小目盛(分解能)が1mmのデジ
タル式定規では、1mm未満の長さ
は測れない
この定規で「82mm」と計測された
場合の有効数字は、2桁
16
測定精度
 前記の1mm刻みの定規で
1mm未満
の長さを測るには、拡大して(または
同じものを複数並べて)測り、測定値
を倍率で割る
 プログラムの時間を計る場合も同じ
測定精度が不足する場合は、繰返し
実行させて計測する
秒単位で 100秒以上計測すれば
有効数字は2桁
17
測定精度
・・・
100ヶ並べて 85mmならば
1ヶの幅は 8.5×10-1mm
100回実行して 85秒ならば
1回の実行時間は 8.5×10-1秒
18
測定精度: 練習
 1mm刻みの定規で、44ヶ並べて計
測したところ、909mmであった。1ヶ
の長さは何mmか?
・・・
44ヶ : 909mm
答: 909/44 = 20.65909090909090・・
= 2.07×101 (mm)
19
平均
 測定数値を平均しても、有効数字の桁
は増えない
 誤差(ばらつき)をキャンセルすること
はできる
 プログラムの実行時間のように測定値
が分解能より小さい場合は、繰り返し
実行させた時間を測定する
20
時間による性能評価
– バッチによる応答時間の計測
 測定の原理
1. 開始時刻を測定
2. 対象プログラムを、十分な回数
実行する
3. 終了時刻を測定
4. (終了時刻ー開始時刻) を回数で
割れば、一回あたりの実行時間
21
時間による性能評価
– バッチによる応答時間の計測
 TIMEコマンド
(Windows)
現在時刻を分単位で表示する
 time関数 (C言語)
秒単位の時刻を求めるtime()と
ctime()を用いて、時刻を秒単位で
表示する
22
TIMEコマンド
 コマンドプロンプト(CMD.EXE)にて使用
TIME/T
/Tがないと 時刻の設定
/Tがあると 分単位の表示
23
time()関数

time_t time(time_t *t)
システム時刻までの経過時間を t
に設定する
経過時間 t は、万国標準時(UTC)
の「1970年1月1日 0時0分0秒」から
の経過時間を秒単位で表した数値
24
ctime()関数
 char
*ctime(const time_t *t)
経過時間 t を現地時間に合わせて
日時の文字列に変換する
文字列の書式は次のようになり、必
ず26文字になる
[曜日] [月] [日] [時:分:秒] [年]\n\0
25
演習1
 現在時刻を秒単位で表示するプログ
ラム second.exe を作成せよ
// second: 秒単位での日付・時刻を表示
// 2009 May 水野嘉明 (テキストの付録Cを編集)
#include <stdio.h>
#include <time.h>
int main( void ) {
time_t t;
time(&t);
printf("%s\n", ctime(&t));
}
// 現在時刻
// 現在時刻を求める
// 日時の文字列に変換し表示
return 0;
26
バッチファイル
 複数のコマンドを記述しておき、一括し
て実行する
 テキストで記述する
エディタ(ノートパッド等)を使用する
 拡張子は .BAT
 コマンドプロンプト(CMD)にて使用
27
バッチファイル
@ECHO OFF
REM FOO.BAT:時間測定
REM 2008/11 MIZUNO
以後のコマンドを
表示しない
コメント
TIME /T
時刻表示
A.EXE > NUL
測定したいコマンド
>NUL は出力を捨てる
TIME /T
PAUSE
停止してキー入力待ち
28
バッチでの繰り返し
 同じコマンドを100回繰り返すには、
FOR /L %%I IN (1,1,100) DO A.EXE
制御変数 開始値、刻み、終値
実行する
コマンド
変数%Iを 1から100まで動かしながら、という意味
回数を増やすときは「100」を書き換える
29
バッチによる応答時間計測
 計測しているのは、正確に言えば
「応答時間 」
ロード時間 + 実行時間
 さらに、計測用コマンド(TIME または
second)の応答時間も含まれる
これらについては、次回
30
演習2
 second.exeを用いたバッチファイルに
より、あるプログラムの応答時間を測
定した。繰返し回数100回 で測定し
たところ、24秒 という結果になった。
真の応答時間は、どのような範囲
にあると考えられるか
この測定で得られる有効数字の桁
数は、何桁か
31
演習2 解説
 全体の(100回分の)時間は
0:0:00
0:01
0:02
0:23
0:24
0:25
23秒強
25秒弱
どちらも、0:00~0:24 の24秒間
つまり、全体時間は23秒超25秒未満
32
演習2 解説
したがって、応答時間の範囲は
0.23秒 ~ 0.25秒
有効数字は、1桁
2×10-1秒
33
実験1 プログラム全体の応答時間
 プログラムL06Y01(付録A)について
応答時間を TIME、second(time関
数)のそれぞれの方法で測定せよ
TIME、secondの各方法での有効
数字桁数は、各々1桁、2桁 にな
るように繰返し回数を設定する
 二つの方法の応答時間を比較し、考
察せよ
34
実験1の注意事項 (1)
 TIMEとsecondでは、繰り返し回数は
当然異なる
必要な有効数字桁数が出る回数
⇒ 同じになってはおかしい
TIME
分単位 有効数字1桁 10分程度
second 秒単位 有効数字2桁 100秒程度
※ 繰返し回数は、レポートに明記すること
35
実験1の注意事項 (2)
 プログラム
L06Y01.EXE は、サーバ
ではなく ローカルマシンに置くこと
ネットワークの負荷によるばらつき
が大きい
36
実験1の注意事項 (3)
 実験レポートの章立ては、R1とは異な
る
章立ては、固定されたものではない
R2では、R1とは別の章立てを用
いる (CP2以降で用いるもの)
37
新しい章立て
新しい章立て
 章の構成
–表紙
–目次
–第1章 目的
–第2章 理論
–第3章 実験方法
–第4章 実験結果
–第5章 考察と結論
–第6章 課題
–参考文献、付録
39
新しい章立て
 「目的」
R1の「序論」に相当する
次のようなことを記述する
実験の目的・意図
(結論と対応する事を忘れない)
各実験の関係
レポートの全体像・構成
40
新しい章立て
 「理論」
どのような理論あるいは原理に基
づき実験を行ったかを書く
各実験について、
理論と観察に基づき仮説を立てる
何を対象に、どのような測定を行
なうかを書く
41
新しい章立て
 「実験方法」
実験で使った道具(ツール、ソフト
ウエアなど)を明示する
実験の手順、条件、環境を詳しく
第3者が、このレポートだけ を読
んで、同じ実験が間違いなくでき
るように書く
42
新しい章立て
 「実験結果」
各実験の結果を文章で書く
表やグラフを有効に利用する
観測した生の値を省略しないこと
四捨五入した値だけだと、妥当
性が検証できないことがある
43
新しい章立て
 考察と結論
考察は、今回の実験全体を通して
得られたこと(知見)を論理的に導
くこと
結論は、目的の章の内容と対応さ
せ、実験により分かったことを書く
(感想を書かないこと)
44
新しい章立て
 課題
課題は通常、文献の調査と考察
からなる
二つ以上の文献を調べ、参照・引
用する
考察は、必ず自分の言葉で書く
(自分の文章と引用は区別する、
引用だけで終わらない)
45
実験を開始して下さい
46
次回の予定
 「性能評価」
応答時間と実行時間、起動時間
 実験レポート R2
応答時間の測定
起動時間の測定
コマンドプロンプト
47
お疲れさまでした