Hallo Ich habe eine Anwendung, die eine Liste von Strichen speichern und mit Seiten zeigen. Der Benutzer wird ständig auf seine Geräte aktualisieren.C#: Leistungsproblem mit Sperren
List<data> li = null;
lock (locks) {
li = dataList.ToList();
}
var a = li.ToDataListStruct();
blah ....
Wäre dies viel effizienter als die unten sein:
lock (locks) {
var a = li.ToDataListStruct();
blah ....
}
ToDataListStruct ist Mapping ein Objekt in der Liste auf eine Art von Objekt und gibt eine neue Liste.
Dies ist eine Serverseite. Ersteres: nur gesperrt, wenn die ToList-Funktion aufgerufen wird, und der Rest des Codes, der die neue Liste verwendet, wird nicht gesperrt. Der zweite: Es hat den gesamten Code gesperrt.
Ist die erste bessere Performance über die letzten
Ich würde denken, die erste ist _better_ weil Sie weniger Zeit in der 'lock()' – MickyD
Ich weiß nicht, wie effizient ToList ist. Innerhalb von ToDataListStruct habe ich eine Liste von Seiten und jede Seite habe ich eine Liste von Strichen, so dass ein bisschen for-Schleife ausgeführt werden muss. – LittleFunny
Ja. Wenn Sie sich Ihre beiden Codebeispiele ansehen, hat das erste 'ToList()', aber alles andere einschließlich 'blah' ist außerhalb des' lock() '. Während der zweite, haben Sie viel Code im Block einschließlich der gemeinsamen "Blah". Generell möchten Sie die Thread-Sperre so schnell wie möglich beenden, wenn der Code keinen Datenschutz mehr benötigt. – MickyD