Enum의 Boxing과 관련된 유용한 강좌
C#에서 Dictionary를 사용하면서 Enum을 Key로 할때가 종종 있다. 그때마다 Boxing과 UnBoxing으로 인해
성능저하 이슈로 찜찜했는데, 마침 좋은 강좌가 있어 link해 둔다.
사용법
public class RemoteInfo
{
public int SVR_ID;
public string SVR_IP;
public string SVR_IP;
}
public enum SvrID
{
ID1 = 1,
ID2,
ID3
}
public static class GlobalValues
{
//EnumDictionary dictionary 구현 class를 전역으로 선언
public EnumDictionary<SvrID, RemoteInfo> Remotes = new EnumDictionary<SvrID, RemoteInfo>();
}
private void InitDictionary()
{
RemoteInfo rm1 = new RemoteInfo();
rm1.SVR_ID = Convert.ToInt32(SvrID.ID1);
rm1.SVR_IP = "192.168.0.25";
rm1.SVR_NM = "테스트1";
GlobalValues.Remotes.Add(rm1);
RemoteInfo rm2 = new RemoteInfo();
rm2.SVR_ID = Convert.Int32(SvrID.ID2);
rm2.SVR_IP = "192.168.0.26";
rm2.SVR_NM = "테스트2";
GlobalValues.Remotes.Add(rm2);
RemoteInfo rm3 = new RemoteInfo();
rm3.SVR_ID = Convert.Int32(SvrID.ID3);
rm3.SVR_IP = "192.168.0.27";
rm3.SVR_NM = "테스트3";
GlobalValues.Remotes.Add(rm3);
}
접근
RemoteInfo test = GlobalValues.Remotes[SvrID.ID1];
사용법은 기존이랑 동일~~
강좌 주소
https://www.slideshare.net/devcatpublications/enum-boxing-enum-ndc2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
Nexon Korea 이무림 편리하고 성능좋게 Enum 사용하기 Enum의 Boxing을 어찌할꼬?
www.slideshare.net
샘플 github 주소
https://github.com/netics01/EnumDictionary
netics01/EnumDictionary
Dictionary without boxing when using enum type key. - netics01/EnumDictionary
github.com