/// <summary> /// Read an individual line from a CIlib output file /// </summary> /// <param name="line">The line to be read.</param> protected virtual void ReadLine(string line) { string[] tokens = line.Split(SplitChars, StringSplitOptions.RemoveEmptyEntries); if (!int.TryParse(tokens[0], out var iter)) { Console.WriteLine("Iteration is not the first column."); } string columnName; int index = 0; //the index of the column being parsed //loop through each column while (index < ColumnArray.Length) { columnName = ColumnArray[index]; List <double> values = new List <double>(); //loop through the various columns (i.e., runs) for this measure while (index < ColumnArray.Length && ColumnArray[index] == columnName) { values.Add(double.Parse(tokens[index + 1])); //add 1 to offset iteration as first column index++; } IterationStats stats = new IterationStats(iter, values); Measurements.AddOrUpdate(columnName, x => //add function { Measurement meas = new Measurement(columnName); meas.AddIterationStatistics(iter, stats); return(meas); }, (name, meas) => //update function { meas.AddIterationStatistics(iter, stats); return(meas); } ); } }