Heim >Backend-Entwicklung >C++ >Bietet „&as;' bei Nullable-Typen immer Leistungssteigerungen?
Leistungsprobleme mit „&as“; und Nullable Types
Verbesserung der Leistung durch prägnante Syntax kommt einem oft in den Sinn, wenn man das „&as;“ verwendet. Operator. Wie jedoch ein aktueller Benchmark zeigt, liefert dieser Operator möglicherweise nicht immer die beabsichtigte Optimierung für nullfähige Typen.
Der Benchmark zeigt unerwartete Leistungsunterschiede zwischen „&as;“, „&is;“ gefolgt von Casting und sogar LINQ-Lösungen. Zum Erstaunen vieler wurde das Erbe „&is;“ Ansatz übertrifft „&as;“, mit einem 20-fachen Unterschied. Dies wirft die Frage auf: Warum so eine Verlangsamung mit „&as;“?
Der zugrunde liegende Grund liegt im vom JIT-Compiler generierten Code. Für „&is;“ genügt eine schnelle Typprüfung und das Auspacken. „&as;“ hingegen ruft eine CLR-Hilfsfunktion für die Wertkonvertierung auf, da zwischen Boxed Integer und Nullable
Während die LINQ-Lösung aufgrund von Iteratoren erwartungsgemäß hinterherhinkt, ist ihre Trägheit im Vergleich zu „&as;“ ist rätselhaft. Ein möglicher Schuldiger könnten Optimierungen von ngen.exe sein.
Zusammenfassend lässt sich sagen, dass „&as;“ bietet syntaktischen Komfort, seine Leistungskompromisse mit nullbaren Typen müssen in leistungsempfindlichen Szenarien sorgfältig abgewogen werden.
Das obige ist der detaillierte Inhalt vonBietet „&as;' bei Nullable-Typen immer Leistungssteigerungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!