public string GroupAndGenerateResultTable() {
            var sb = new StringBuilder();

            foreach (var entry in RunEntries) {
                foreach (var grp in entry.RawValues.GroupBy(x => x.Key)) {
                    var first = grp.First();
                    if (grp.Count() == 1) entry.GroupedValues.Add(first);
                    else {
                        entry.GroupedValues.Add(new ValueEntry() { Key = first.Key + "(avg)", Value = grp.Average(x => x.Value) });
                        entry.GroupedValues.Add(new ValueEntry() { Key = first.Key + "(min)", Value = grp.Min(x => x.Value) });
                        entry.GroupedValues.Add(new ValueEntry() { Key = first.Key + "(max)", Value = grp.Max(x => x.Value) });
                    }
                }
            }

            var cols = new List<ColEntry>();
            foreach (var run in RunEntries) {
                foreach (var val in run.GroupedValues) {
                    //var colName = string.Format("{0}_{1}", run.Benchmark.Name, val.Key);
                    var col = cols.FirstOrDefault(x => x.Benchmark == run.Benchmark && x.Key == val.Key);
                    if (col == null) {
                        col = new ColEntry() { Benchmark = run.Benchmark, Key = val.Key };
                        cols.Add(col);
                    }
                    col.Rows[run.TestCase] = val.Value;
                }
            }

            sb.Append("\"\";");
            foreach (var col in cols) sb.AppendFormat("\"{0}\";", col.Key);
            sb.Append("\n");

            sb.Append("\"\";");
            foreach (var col in cols) sb.AppendFormat("\"{0}\";", col.Benchmark.Name);
            sb.Append("\n");

            foreach (var tc in RunEntries.GroupBy(x => x.TestCase).Select(x => x.Key)) {
                sb.AppendFormat("\"{0}\";", tc);
                foreach (var col in cols) {
                    double val;
                    if (col.Rows.TryGetValue(tc, out val)) sb.AppendFormat("{0};", val);
                    else sb.AppendFormat(";");
                }
                sb.Append("\n");
            }

            return sb.ToString();
        }
        public string GroupAndGenerateResultTable()
        {
            var sb = new StringBuilder();

            foreach (var entry in RunEntries)
            {
                foreach (var grp in entry.RawValues.GroupBy(x => x.Key))
                {
                    var first = grp.First();
                    if (grp.Count() == 1)
                    {
                        entry.GroupedValues.Add(first);
                    }
                    else
                    {
                        entry.GroupedValues.Add(new ValueEntry()
                        {
                            Key = first.Key + "(avg)", Value = grp.Average(x => x.Value)
                        });
                        entry.GroupedValues.Add(new ValueEntry()
                        {
                            Key = first.Key + "(min)", Value = grp.Min(x => x.Value)
                        });
                        entry.GroupedValues.Add(new ValueEntry()
                        {
                            Key = first.Key + "(max)", Value = grp.Max(x => x.Value)
                        });
                    }
                }
            }

            var cols = new List <ColEntry>();

            foreach (var run in RunEntries)
            {
                foreach (var val in run.GroupedValues)
                {
                    //var colName = string.Format("{0}_{1}", run.Benchmark.Name, val.Key);
                    var col = cols.FirstOrDefault(x => x.Benchmark == run.Benchmark && x.Key == val.Key);
                    if (col == null)
                    {
                        col = new ColEntry()
                        {
                            Benchmark = run.Benchmark, Key = val.Key
                        };
                        cols.Add(col);
                    }
                    col.Rows[run.TestCase] = val.Value;
                }
            }

            sb.Append("\"\";");
            foreach (var col in cols)
            {
                sb.AppendFormat("\"{0}\";", col.Key);
            }
            sb.Append("\n");

            sb.Append("\"\";");
            foreach (var col in cols)
            {
                sb.AppendFormat("\"{0}\";", col.Benchmark.Name);
            }
            sb.Append("\n");

            foreach (var tc in RunEntries.GroupBy(x => x.TestCase).Select(x => x.Key))
            {
                sb.AppendFormat("\"{0}\";", tc);
                foreach (var col in cols)
                {
                    double val;
                    if (col.Rows.TryGetValue(tc, out val))
                    {
                        sb.AppendFormat("{0};", val);
                    }
                    else
                    {
                        sb.AppendFormat(";");
                    }
                }
                sb.Append("\n");
            }

            return(sb.ToString());
        }
示例#3
0
 public void RowEntry_Completed(object sender, EventArgs e)
 {
     ColEntry.Focus();
 }