/// <summary> /// 记录一次行为的执行时间 /// </summary> /// <param name="actionName">行为的名字</param> /// <param name="action">行为</param> /// <param name="unit">时间单位</param> public void Record(string actionName, Action action, RecordUnit unit = RecordUnit.Millisecond) { _CurrentRecordDepth++; RecordData record = new RecordData { ActionName = actionName, Unit = unit, Depth = _CurrentRecordDepth }; _RecordList.Add(record); Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); // 因为 action中不一定是正确的 // 所以应该包含在try-catch当中,并把异常抛回调用方 try { action(); } catch (Exception e) { throw e; } finally { stopwatch.Stop(); long tick = stopwatch.ElapsedTicks; record.Time = unit == RecordUnit.Millisecond ? (double)tick / TimeSpan.TicksPerMillisecond : (double)tick / TimeSpan.TicksPerSecond; _CurrentRecordDepth--; } }
public int ExtractIntFromRecordUnit(RecordUnit unit) { return(unit.score); }