Die folgende Prozedur (Erklärung folgt) funktioniert gut für wirklich kleine Listen, aber wenn die Liste eine größere Anzahl von Elementen enthält (1/2 Millionen) die Anwendung gibt "nicht reagiert" Staat, und es dauert etwa 2,5 Minuten zu beenden (sehr schlechte Zeit). Ich könnte hinzufügen, die Anwendung benötigt, um Listen von 100 Millionen Artikel mindestens (schließlich) zu verarbeiten.lustig genug, das ist wahrscheinlich ein Stack-Überlauf-Problem
hier ist der Code für das problematische Verfahren:
public void removeItems(List<long> L, SortedList<long, List<long>> _subLists)
{
foreach (KeyValuePair<long, List<long>> kvp in _subLists)
{
foreach (long duplicate in kvp.Value)
{
int j = L.IndexOf(duplicate);
L.RemoveRange(j,(int)kvp.Key);
}
}
}
L eine Liste von Long-Wert ist. _subLists ist eine sortierte Liste, wobei jeder Wert eine Liste von Werten von L ist, die eine arithmetische Progressionsreihe mit einer gewissen Differenz (nicht relevant) beginnt. Der diesem Wert zugeordnete Schlüssel ist die Länge der Reihe, die die Werte enthalten.
Beispiel:
L = {1,2,3,5,6,7,18,20,21} _subLists = {2, 20 <>} {3, < 1,5> }
Das Verfahren einfach entfernt die arithmetische Reihe Serie von L.
Welche Sprache? Und was ist die Frage? –
C#. Ideen für eine schnellere Implementierung? –