Wie kann ich die Leistung verbessern und die Geschwindigkeit der Verarbeitungsdaten erhöhen, damit es kurze Zeit benötigC#

Ein Treffpunkt für C#-Programmierer
Guest
 Wie kann ich die Leistung verbessern und die Geschwindigkeit der Verarbeitungsdaten erhöhen, damit es kurze Zeit benötig

Post by Guest »

ein Daten, aber die einzige Herausforderung, mit der ich stehe, ist, dass es sehr langsam ist, dass das Abrufen und Einfügen aller Daten ungefähr 10 Minuten dauert. Wie kann ich meinen Code unten ändern, damit ich die Leistung verbessern und die Geschwindigkeit erhöhen kann, um die Zeit zu minimieren, die zum Verarbeiten und Einfügen aller Daten erforderlich ist. < /p>

Code: Select all

using (var context = new ApplicationDbContext())
{
var dispenseToDelete = context.tblDispense.Where(p => p.HfrCode == facilityName);

if (dispenseToDelete.Any())
{
context.tblDispense.RemoveRange(dispenseToDelete);
context.SaveChanges();
}

}

using (StreamReader sr = new StreamReader(filePath))
using (JsonTextReader reader = new JsonTextReader(sr))
{
while (reader.Read())
{
if (reader.TokenType == JsonToken.StartArray && reader.Path == "tblDispense")
{
using (var context = new ApplicationDbContext())
{
List tblDispenseBatch = new List();
int batchSize = 1000;

while (reader.Read() && reader.TokenType != JsonToken.EndArray)
{
if (reader.TokenType == JsonToken.StartObject)
{
JObject item = JObject.Load(reader);
TblDispense tblDispense = item.ToObject();
tblDispense.UUID = Guid.NewGuid().ToString() + "." + facilityName;
tblDispense.MSDCode = tblDispense.MSDCode + '.' + facilityName;
tblDispense.DispenseID = tblDispense.DispenseID + "." + facilityName;
tblDispense.DispenseRecordId = tblDispense.DispenseRecordId + '.' + facilityName;
tblDispense.HfrCode = facilityName;
tblDispenseBatch.Add(tblDispense);

// Batch insert to avoid memory overload
if (tblDispenseBatch.Count >= batchSize)
{
try
{
context.tblDispense.AddRange(tblDispenseBatch);
context.SaveChanges();
tblDispenseBatch.Clear();
}
catch (DbUpdateException ex)
{
Console.WriteLine($"[{facilityName}] an error occurred while saving the batch: {ex.InnerException?.Message}");
logger.LogError($"[{facilityName}] an error occurred while saving the batch: {ex.InnerException?.Message}");
}
}
}
}

// Insert remaining items in the batch
if (tblDispenseBatch.Count > 0)
{
try
{
context.tblDispense.AddRange(tblDispenseBatch);
context.SaveChanges();
tblDispenseBatch.Clear();
}
catch (DbUpdateException ex)
{
Console.WriteLine($"[{facilityName}] an error occurred while saving the batch: {ex.InnerException?.Message}");
logger.LogError($"[{facilityName}] an error occurred while saving the batch: {ex.InnerException?.Message}");
}
}
}
break;
}
}
}
Alle Vorschläge werden sehr geschätzt.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post