예제 #1
0
파일: Form1.cs 프로젝트: akinomyoga/afh
        //===========================================================
        //		計測
        //===========================================================
        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();
        }
예제 #2
0
        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*** 評価結果が予期した物と異なります!!!");
            }
        }
예제 #3
0
파일: Form1.cs 프로젝트: akinomyoga/afh
        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();
        }