2 Punkte von clash4970 2025-03-17 | Noch keine Kommentare. | Auf WhatsApp teilen

Entwicklungshintergrund

Dieses Paket wurde entwickelt, um beim Entwickeln von Unity-Spielen oder bei der Verwendung von C# die durch Boxing entstehende Garbage-Erzeugung beim Einsatz von Enum.HasFlag einfach zu vermeiden.

Funktionsweise

Mithilfe eines Source Generators werden zur Compile-Zeit in den Codebasen enum-Deklarationen mit [Flag] gefunden und automatisch benutzerdefinierte Erweiterungsmethoden HasFlagNonAlloc erzeugt.

Funktionen

Damit lässt sich HasFlag-Code mit nahezu null Runtime-Overhead lesbar schreiben.

var currentState = PlayerState.Idle | PlayerState.Walking;  
  
// Bisheriges HasFlag (Boxing tritt auf)  
if (currentState.HasFlag(PlayerState.Idle))  
{  
    // ...  
}  
  
// Implementierung einer HasFlag-Prüfung, die Boxing vermeidet  
if ((currentState & PlayerState.Idle) == PlayerState.Idle)  
{  
    // ...  
}  
  
// Nach der Installation von NonAllocFlagGenerator  
if (currentState.HasFlagNonAlloc(PlayerState.Idle))  
{  
    // ...  
}  

Dies ist mein erstes richtiges(?) Open-Source-Projekt, daher gibt es noch vieles, was unzureichend ist, aber ich habe mir ein Herz gefasst und es veröffentlicht!
Ich hoffe, es ist hilfreich, wenn ihr performancekritischen Code schreibt.

Feedback ist jederzeit willkommen!

Noch keine Kommentare.

Noch keine Kommentare.