StructPerformance: Unterschied zwischen den Versionen

Aus Das Sopra Wiki
Keine Bearbeitungszusammenfassung
Dietsch (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
 
(2 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt)
Zeile 3: Zeile 3:
{{BA|Greitschus|Wenn man den Artikel noch etwas aufbläht, kann man ihn umbenennen und als Artikel für "by Value" und "by Reference" verwenden. Ich denke, das wäre sinnvoller, als nur auf das Problem mit Structs einzugehen.}}
{{BA|Greitschus|Wenn man den Artikel noch etwas aufbläht, kann man ihn umbenennen und als Artikel für "by Value" und "by Reference" verwenden. Ich denke, das wäre sinnvoller, als nur auf das Problem mit Structs einzugehen.}}
{{BA|Justus|Es gibt noch das Problem des Boxings in Listen u.ä.
{{BA|Justus|Es gibt noch das Problem des Boxings in Listen u.ä.
<source lang="csharp">
Point p;
Point p;
p.x = p.y = 1;
p.x = p.y = 1;
Object o = p;    // Verpackt den Punkt in ein Object, mit Allozieren für Objekt, Kopieren von p nach o
Object o = p;    // Verpackt den Punkt in ein Object, mit Allozieren für Objekt, Kopieren von p nach o
p = (Point)o;    // Entpackt den Punkt und kopiert ihn dann in den Platz für p.
p = (Point)o;    // Entpackt den Punkt und kopiert ihn dann in den Platz für p.
 
</source>
Das kann also auch so relativ schnell recht lahm werden. Das gilt auch, wenn man Point in Listen speichert.
Das kann also auch so relativ schnell recht lahm werden. Das gilt auch, wenn man Point in Listen speichert.
 
}}
Beispiel:


Wenn man in C# mit [[CSharp#Structs|Structs]] arbeitet gibt es vor allem im Hinblick auf die Performance ein paar Aspekte die man beachten sollte. Dieser Artikel zeigt die Unterschiede in der Verwendung von Structs und worauf man achten muss.
Wenn man in C# mit [[CSharp#Structs|Structs]] arbeitet gibt es vor allem im Hinblick auf die Performance ein paar Aspekte die man beachten sollte. Dieser Artikel zeigt die Unterschiede in der Verwendung von Structs und worauf man achten muss.