In einem Dictionary<struct,int>
: ist es möglich, Add/Set in einem Anruf?C# Wörterbuch Add/Set in einem Anruf aus Leistungsgründen
Also ist es möglich, den folgenden Code in nur einer Suche pro Eintrag zu tun?
Dies geschieht in einer sehr engen Schleife über eine große Menge von Daten, so dass alle Leistung zählt.
Oder gibt es eine bessere geeignete Datenstruktur?
Ich glaube nicht, dass Sie vermeiden können, in das Wörterbuch zweimal zu indizieren (einmal, um einen vorhandenen Wert zu erhalten, und wieder um den Wert zu setzen), aber Sie können überspringen, indem Sie den ursprünglichen Wert auf 0 setzen, da TryGetValue das für Sie erledigt, wenn der Schlüssel nicht gefunden wird. Und Sie müssen eine Überprüfung haben, falls TryGetValue false zurückgibt. – SlimsGhost
Gibt es ein _actual_ Leistungsproblem relativ zum gesamten Prozess oder ist es nur _assuming_, dass es einen gibt? Dictionary-Lookups sind O (1), daher sollte der Lookup (und das Set) sehr wenig Performance-Overhead haben. –
@SlimsGhost Sie müssen das Ergebnis in diesem Fall nicht prüfen - wenn der Schlüssel dann nicht existiert '_KeyToPoints [key]' würde '0 + Punkte' an dieser Schlüsselposition speichern. Der Code wäre der gleiche, unabhängig davon, ob der Schlüssel existiert oder nicht. –