示例#1
0
        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();
        }
示例#2
0
        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());
                    }
                }
        }