C#’ta çalışma zamanı ek yükünü en aza indirirken okunabilir HasFlag kodu yazmak
(github.com/KBluePurple)Geliştirme arka planı
Bu paket, Unity oyunu geliştirirken veya C# kullanırken temel Enum’daki HasFlag kullanımında Boxing nedeniyle çöp üretimini kolayca önlemek için geliştirildi!
Çalışma şekli
Source Generator kullanarak derleme zamanında kodlar içindeki [Flag] bulunan enum bildirimlerini bulur ve özel HasFlagNonAlloc genişletme metodunu otomatik olarak üretir.
Özellikler
Neredeyse sıfıra yakın çalışma zamanı ek yüküyle HasFlag kodunu okunabilir şekilde yazabilmenizi sağlar!
var currentState = PlayerState.Idle | PlayerState.Walking;
// Mevcut HasFlag (Boxing oluşur)
if (currentState.HasFlag(PlayerState.Idle))
{
// ...
}
// Boxing’den kaçınan HasFlag kontrolü uygulaması
if ((currentState & PlayerState.Idle) == PlayerState.Idle)
{
// ...
}
// NonAllocFlagGenerator kurulduktan sonra
if (currentState.HasFlagNonAlloc(PlayerState.Idle))
{
// ...
}
Bu, ilk kez yaptığım gerçekten düzgün sayılabilecek(?) açık kaynak projesi olduğu için eksikleri çok olabilir, ama cesaret edip paylaşıyorum!
Performansa duyarlı kod yazarken faydalı olursa sevinirim.
Geri bildirimlere her zaman açığım!
Henüz yorum yok.