Ich habe einen Prozess, der viele Zeilen einer Tabelle bekommt. Diese Zeilen müssen in einem Berichtsblatt gemeldet werden. Was ich gerade mache, ist zu langsam, weil es so viele Zeilen gibt (600.000 < = x) -Rows. Ich zeige, was ich jetzt mache Ihnen eine Vorstellung zu geben, was ich tue:Viele Zeilen in eine Datei effizient schreiben
private void ShowNotFoundRows() {
report += "NOT FOUND - Rows";
report += "\r\n";
report += "In Current:";
report += "\r\n";
string Columns = "|";
foreach (string header in currentModel.Columns) {
Columns += header + "|";
}
report += Columns;
report += "\r\n";
foreach (string row in newModel.Keys) {
report += row + "\r\n";
}
report += "\r\n";
report += "In New:";
report += "\r\n";
report += Columns;
report += "\r\n";
foreach (string row in currentModel.Keys) {
report += row + "\r\n";
}
}
und nach:
private void CreateReportFile() {
MyLog.WriteToLog("Creating ReportFile "+newModel.TableName, MyLog.Messages.Info);
string dir = Settings.Default.ReportFolder + "\\" + directoryName + " " + DateTime.Now.ToString("dd-MM-yyyy");
Directory.CreateDirectory(dir);
try {
File.WriteAllText(dir + "\\Report " + newModel.TableName, report);
} catch (DirectoryNotFoundException e) {
Console.WriteLine(e.Message + "\n" + e.StackTrace);
}
}
Eine Sache, die Sie tun können, ist die Verwendung eines 'StringBuilder' anstelle von so vielen String-Verkettungen. Mit dieser kleinen Änderung könnten Sie eine deutliche Verbesserung feststellen. – itsme86