コンピュータプラクティスⅠ 時間の測定 水野嘉明 本日の内容 プログラムの性能評価 有効数字、測定精度 プログラム実行時間の測定 実験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 お疲れさまでした
© Copyright 2024 ExpyDoc