C++ 객체나 구조체 변스들의 메모리 오더링 관련해 질문 드립니다.
글쓴이: zkdnsxjaos / 작성시간: 토, 2014/06/21 - 10:27오전
안녕하세요.
지금 C++을 사용해 (gcc 4.8.1, x86_64 CentOS6.4) 코딩을 좀 하고 있는데,
구조체에 int (4bytes) 변수 하나와 std::string (8bytes) 변수 하나를 할당하여 사용하고 있습니다.
각각 sizeof 를 찍어보면 각각 4, 8 바이트라고 나오지만
구조체를 sizeof로 찍어보면 16바이트 입니다.
여기서, 16 바이트 크기로 구조체 변수를 유지하고 싶은데, 간단해 보이지만 한번 여러분께 방법을 물어보려고 글을 올립니다.
예를들어, dummy int 변수 하나를 추가하여 유지를 하면 될까요?
제 CPU의 캐쉬라인의 크기가 64바이트이니, 만약 위에 경우처럼 유지가 된다면 4개의 구조체 변수가 메모리 상에 연속하여 할당되었을때 cache coherency의 이득을 많이 볼수 있을것 같습니다.
감사합니다!
Forums:
c++11을 사용하신다면alignas(64)
c++11을 사용하신다면
로 align해주시면 되고, c++11을 사용하지 않으신다면 gcc 확장을 사용하여
와 같이 정렬 옵션을 주시면 됩니다.
메모리 오더링이라는 표현은 다른 의미로 많이 사용되는 표현이므로 질문하신 내용에 적합한 표현은 아닙니다. http://en.wikipedia.org/wiki/Memory_ordering
해당 구조체에 접근이 굉장히 많이 일어나지 않는다면
해당 구조체에 접근이 굉장히 많이 일어나지 않는다면 상관없을 것 같은데요....
초당 대략 얼마나 자주 접근이 발생하나요? 만번? 10만번?
댓글 달기