프로그래밍/공부
왜 구조체는 16바이트가 넘지 않을 때 사용하는 것을 권장할까??
개념있는식빵
2021. 5. 5. 03:22
MSDN에선 다음과 같은 조건을 만족하지 않는 한 class를 사용하는 것을 권장한다
1. 논리적으로 기본 자료형과 유사한 단일 값을 표현할 때
2. 인스턴스의 크기가 16바이트 이하의 크기를 가졌을 때
3. 불변일 때
4. 박싱(Boxing)이 빈번하게 일어나지 않을 때
물론 그냥 보고 넘어갈 수도 있겠지만,
하지말라던지 권장한다던지 이러면 더 좋다던지 등의 글이 있을 때 '왜??' 라는 의문이 들기 마련이다
그래서 찾아보았더니 이런 글이 있었다.
이에 대한 비밀은, SSE(Streaming SIMD Extensions) 레지스터와 연관이 있습니다.
x86 인텔 CPU의 경우 128비트 크기의 SSE 레지스터를 xmm0 ~ xmm7까지,
64비트인 경우 추가로 xmm8 ~ xmm15를 가지고 있는데,
바로 이 레지스터를 사용하기 때문에 128비트,
즉 16 바이트 크기에 대해서는 레지스터 하나로 처리할 수 있어 구조체의 권장 크기가 된 것입니다.
글쓴이 분께선 ".NET Disassembly" 창을 띄워 직접 확인해주셨으니 더 궁금하다면 아래 글을 참고하면 될 것 같다.
나도 화이팅해서 더 깊은 지식을 가진 프로그래머가 되어야지..
참고 출처: www.sysnet.pe.kr/2/0/12620 [성태의 닷넷 이야기]