public string GetTraceInfo()
{
var sb = new StringBuilder();
long sumParsingTime = 0;
long sumCrossCompilingTime = 0;
long sumKernelTime = 0;
long sumCollectingTime = 0;
long sumPagingTime = 0;
long sumFullExecutingTime = 0;
var pass = 0;
foreach (var info in TraceInfo)
{
sumParsingTime += info.ParsingTime;
sumCrossCompilingTime += info.CrossCompilingTime;
sumKernelTime += info.KernelTime;
sumCollectingTime += info.CollectingTime;
sumPagingTime += info.PagingTime;
sumFullExecutingTime += info.FullExecutingTime;
sb.Append("Pass#").Append(++pass).AppendLine();
sb.Append(" Input text:\t").AppendLine(info.InputText);
sb.Append(" Parsed text:\t").AppendLine(info.ParsedText);
sb.Append(" Full executing time:\t").AppendLine(new TimeSpan(info.FullExecutingTime).ToString());
sb.Append(" Parsing time:\t").AppendLine(new TimeSpan(info.ParsingTime).ToString());
sb.Append(" Cross compiling time:\t").AppendLine(new TimeSpan(info.CrossCompilingTime).ToString());
sb.Append(" Kernel time:\t").AppendLine(new TimeSpan(info.KernelTime).ToString());
sb.Append(" Collecting time:\t").AppendLine(new TimeSpan(info.CollectingTime).ToString());
sb.Append(" Paging time:\t").AppendLine(new TimeSpan(info.PagingTime).ToString());
sb.Append(" Object tree:\t").AppendLine(info.ObjectTree);
}
if (TraceInfo.Count() > 1)
{
sb.AppendLine("=================");
sb.AppendLine("Summarize: ");
sb.Append(" Full executing time:\t").AppendLine(new TimeSpan(sumFullExecutingTime).ToString());
sb.Append(" Cross compiling time:\t").AppendLine(new TimeSpan(sumCrossCompilingTime).ToString());
sb.Append(" Kernel time:\t").AppendLine(new TimeSpan(sumKernelTime).ToString());
sb.Append(" Collecting time:\t").AppendLine(new TimeSpan(sumCollectingTime).ToString());
sb.Append(" Paging time:\t").AppendLine(new TimeSpan(sumPagingTime).ToString());
}
return sb.Replace('\0','.').ToString();
}