public override void report(BenchmarkRecord record) { try { Directory.CreateDirectory(directory); if (!file_initialized) { using (var writer = new StreamWriter(filepath)) using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture)) { csv.Configuration.RegisterClassMap <CSVBenchmarkReportMap>(); csv.WriteHeader <BenchmarkRecord>(); } file_initialized = true; } using (var writer = new StreamWriter(filepath, append: true)) using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture)) { csv.Configuration.RegisterClassMap <CSVBenchmarkReportMap>(); csv.NextRecord(); csv.WriteRecord(record); } } catch (IOException ioEx) { HandleIOException(ioEx); } }
public void tick(long elapsedMilliseconds) { // make sure the first benchmark record is not created immediately but after the reportInterval if (lastBenchmarkReport == 0) { lastBenchmarkReport = elapsedMilliseconds; return; } if (elapsedMilliseconds - lastBenchmarkReport > reportIntervalInMilliseconds) { var outputRecord = currentRecord; currentRecord = new BenchmarkRecord(); lastBenchmarkReport = elapsedMilliseconds; foreach (var reporter in reporters) { reporter.report(outputRecord); } } }
public abstract void report(BenchmarkRecord record);