ที่มาของการพัฒนา

แพ็กเกจนี้ถูกพัฒนาขึ้นเพื่อให้สามารถหลีกเลี่ยงการสร้าง garbage จาก Boxing ได้อย่างง่ายดาย ทุกครั้งที่พัฒนาเกมด้วย Unity หรือใช้งาน C# แล้วต้องใช้ Enum แบบพื้นฐานของ HasFlag!

วิธีการทำงาน

ใช้ Source Generator เพื่อค้นหา declaration ของ enum ที่มี [Flag] อยู่ในโค้ดระหว่าง compile time แล้วสร้าง extension method แบบกำหนดเองชื่อ HasFlagNonAlloc ขึ้นมาโดยอัตโนมัติ

ฟีเจอร์

ช่วยให้เขียนโค้ด HasFlag ได้อ่านง่าย พร้อมมี runtime overhead ที่แทบจะเป็นศูนย์!

var currentState = PlayerState.Idle | PlayerState.Walking;  
  
// 기존 HasFlag (Boxing 발생)  
if (currentState.HasFlag(PlayerState.Idle))  
{  
    // ...  
}  
  
// Boxing 을 피하는 HasFlag 체크 구현  
if ((currentState & PlayerState.Idle) == PlayerState.Idle)  
{  
    // ...  
}  
  
// NonAllocFlagGenerator 설치 이후  
if (currentState.HasFlagNonAlloc(PlayerState.Idle))  
{  
    // ...  
}  

นี่เป็นโปรเจกต์โอเพนซอร์สที่จริงจังโปรเจกต์แรกที่ผมทำ(?) จึงอาจยังมีส่วนที่ไม่สมบูรณ์อยู่มาก แต่ก็ตัดสินใจรวบรวมความกล้ามาโพสต์ครับ!
หวังว่าจะเป็นประโยชน์เมื่อคุณต้องเขียนโค้ดที่ไวต่อประสิทธิภาพ

ยินดีรับฟีดแบ็กเสมอครับ!

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น