public Timing(string name) { overheadTime.Start(); parent = current; current = this; var stackClass = new StackFrame(1, false).GetMethod().ReflectedType.Name; var key = string.Format("{0}_{1}", name, stackClass); if (!timings.TryGetValue(key, out info)) { timings.Add(key, info = new TimingSample() { Name = name, StackClass = stackClass, Stopwatch = new Stopwatch() }); } info.Calls++; if (parent != null) { parent.info.Stopwatch.Stop(); } info.Stopwatch.Start(); timings[key] = info; overheadTime.Stop(); }
public TimingGroup(string path) { using (var stream = new FileStream(path, FileMode.Open)) using (var reader = new BinaryReader(stream)) { TotalTime = new TimeSpan(reader.ReadInt64()); OverheadTime = new TimeSpan(reader.ReadInt64()); Timings = new TimingSample[reader.ReadInt32()]; for (var i = 0; i < Timings.Length; i++) { Timings[i].Name = reader.ReadString(); Timings[i].StackClass = reader.ReadString(); Timings[i].Calls = reader.ReadInt32(); Timings[i].Duration = new TimeSpan(reader.ReadInt64()); } } }