//=========================================================== // 計測 //=========================================================== public void Execute(afh.Application.Log log) { // 前書き log.Lock(); log.WriteLine(); log.WriteLine(STR_LINE); log.WriteLine("\tBenchmark を開始します。"); log.WriteLine("\t\tMethodName: {0}::{1}", minfo.DeclaringType.FullName, minfo.Name); if (this.Description != "") { log.WriteLine("\t\tDescription: {0}", this.Description); } log.WriteLine(STR_LINE); log.Unlock(); try{ int loop = 1; double msecs = 0; for (int i = 1; loop > 0; loop <<= 2, i++) { log.WriteLine("第 {0} 回計測開始 (Loop 回数: {1} 回):", i, loop); TimeSpan ts = this.meth(loop); log.WriteLine("\t経過時間: {0} ms", msecs = ts.TotalMilliseconds); if (ts.Seconds != 0) { break; } if (msecs < 16.0) { loop <<= 6; } } double time = msecs / loop; int iunit = 0; if (time > 0) { while (time < 1) { time *= 1000; iunit++; } } log.WriteLine("一回当たり時間: {0:F2} {1}s", time, units[iunit]); }catch (System.Exception e) { log.WriteError(e, "Bench の実行中に例外が発生しました。"); } // 後書き log.Lock(); log.WriteLine(STR_LINE); log.WriteLine("\tBenchmark を終了しました。"); log.WriteLine(STR_LINE); log.Unlock(); }
private static void TestRegexMatch(afh.Application.Log log, string regex, string text, bool expected) { StringRegex.RegLan reg = new StringRegex.RegLan(regex); bool r = reg.IsMatching(text); log.WriteLine("'{1}'∈/{0}/ : {2}", reg, text, r); if (r != expected) { log.WriteError("***ASSERTION FAILED*** 評価結果が予期した物と異なります!!!"); } }
public void Execute(afh.Application.Log log) { // 前書き log.Lock(); log.WriteLine(); log.WriteLine(STR_LINE); log.WriteLine("\tTest を開始します。"); log.WriteLine("\t\tMethodName: {0}::{1}", info.DeclaringType.FullName, info.Name); if (description != "") { log.WriteLine("\t\tDescription: {0}", this.description); } log.WriteLine(STR_LINE); log.Unlock(); bool failed = false; object ret = null; System.DateTime start = System.DateTime.Now; try { ret = this.info.Invoke(null, new object[] { log }); }catch (System.Exception e) { log.WriteError(e, "Test の実行中に例外が発生しました。"); failed = true; } System.TimeSpan ts = System.DateTime.Now - start; // 後書き log.Lock(); if (!failed && info.ReturnType != typeof(void)) { log.WriteLine(STR_LINE); log.WriteLine("戻り値 ({0}):", info.ReturnType); log.WriteLine(ret ?? "null"); } log.WriteLine(STR_LINE); log.WriteLine("\tTest を終了しました。"); log.WriteLine("\t\t経過時間: {0} ms", ts.TotalMilliseconds); log.WriteLine(STR_LINE); log.Unlock(); }