Sto cercando di accelerare un pezzo di codice che unisce due SortedLists
.C# Unisci due liste ordinate (Unione?)
C# 4.0 generico SortedList
: http://msdn.microsoft.com/en-us/library/ms132319(v=vs.100).aspx
public Trait getTrait(decimal thisValue)
{
if (ParentStructure != null && ParentStructure.RankedTraits.Count > 0)
{
SortedList<decimal, Trait> tempTraits = this.RankedTraits;
// Improve here (union?)
foreach (KeyValuePair<decimal, Trait> kvp in (ParentStructure.RankedTraits))
{
if (!tempTraits.ContainsKey(kvp.Key))
{
tempTraits.Add(kvp.Key, kvp.Value);
}
}
return _getTrait(tempTraits, thisValue);
}
}
return _getTrait(_rankTraits, thisValue);
}
Sto pensando che un sindacato al posto del ciclo foreach
sarebbe più veloce, ma non so come implementare un sindacato su un SortedList
. Se qualcuno potesse aiutarmi, lo apprezzerei.
Inoltre, se c'è un modo migliore per farlo nel complesso, sono aperto a suggerimenti.
Solo un'idea, ma secondo [questa risposta] (http://stackoverflow.com/a/1754080/551322), potrebbe essere d'aiuto se si ordina la raccolta di input. – nrodic
Grazie, i dati in ingresso provengono da elenchi ordinati in modo da renderli preordinati - osservando ciò nonostante potrei voler passare a SortedDictionary. –
Perché stai cercando di velocizzare questo codice? Funziona male? – Enigmativity