private XElement GenerateElementForPerformanceCounter(
            SummaryPerformanceData counter,
            SummaryPerformanceData parent)
        {
            XElement result = new XElement("counter");

            result.Add(new XAttribute("name", counter.Name));
            double percentage;

            if (parent == null)
            {
                percentage = 100;
            }
            else
            {
                percentage = GetPercentage(parent.SummarySpan, counter.SummarySpan);
            }
            result.Add(new XAttribute("Percentage", percentage));
            result.Add(new XAttribute("TotalTime", counter.SummarySpan));
            foreach (SummaryPerformanceData child in GetChildren(counter))
            {
                result.Add(GenerateElementForPerformanceCounter(child, counter));
            }
            return(result);
        }
        public XElement ExportToXml()
        {
            SummaryPerformanceData root = SumMap.First(m => String.IsNullOrEmpty(m.Value.ParentName)).Value;
            XElement element            = GenerateElementForPerformanceCounter(root, null);

            return(element);
        }
 private IEnumerable <SummaryPerformanceData> GetChildren(SummaryPerformanceData parent)
 {
     return(SumMap.Where(v =>
                         v.Value.ParentName.Equals(parent.Name, StringComparison.OrdinalIgnoreCase))
            .Select(v => v.Value));
 }