[t:/]$ 지식_

bss와 heap

2017/11/27

간만에 대용량 메모리 할당이 필요한 문제를 풀었다. 사내 코딩 대회에서 나왔다. 귀찬아서 배열 잡고 했는데, 한계는 예상했고, 한계랑 만났다.

힙도 마찬가지라고 생각했다. 힙을 많이 잡으면 bss(전역변수)처럼 컴파일 오류는 나지 않지만, 스왑으로 넘어가서 원하는 결론은 못 내지 않을까 했는데 어쨌든 힙은 더 많이 잡을 수 있었다. mmap은 다른 이유로 제외하고.

어떤 이유인지는 모르겠는데 힙으로 잡은 메모리 쪽이 속도가 좀 더 났다. 왜죠? 64비트 리눅스 머신에서 세그먼팅에 의한 2중 참조를 하지 않을텐데, 디스어셈을 까봐야 알것다.

간만에 메모리 얼라인과 성능의 상관관계를 검색해보았다. 하드웨어 얼라인먼트가 제공되는 x86 머신에서는 얼라인된 메모리가 빠르다는 증거는 없다고한다. 실리콘을 직접 설계한다고 상상해 볼 때 얼라인먼트가 맞지 않으면 아마도 쓰리쿠션은 당연할 것 같은데, 캐시에 한 번에 덤핑해서 쓰니까 속도 차이는 나지 않는 것 같다.

https://lemire.me/blog/2012/05/31/data-alignment-for-speed-myth-or-reality/





공유하기













[t:/] is not "technology - root". dawnsea, rss