У меня есть процесс, который получает много строк таблицы. Эти строки должны быть представлены в отчете. То, что я делаю на данный момент, слишком медленное, потому что так много строк (600.000 < = x) -Rows. я покажу, что я делаю сейчас, чтобы дать вам представление о том, что я делаю:Написание многих строк в файл эффективно
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";
}
}
и после:
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);
}
}
Одна вещь, которую вы можете сделать, это использовать 'StringBuilder' вместо того, чтобы делать так много конкатенаций строк. Вы можете увидеть значительное улучшение с этим небольшим изменением. – itsme86