우리가 클래스 A
을 가지고 있고 배열의 각 요소를 루프 할 때마다 각 개체가 메모리의 다른 위치에 있고 정렬되지 않았기 때문에 현금 누락을 일으킬 수있는 A
개체에 대한 포인터 배열이 있다고 가정 해 보겠습니다. 동일한 블록에서 하나씩 차례로 처리합니다. 실제 개체가 아니라 개체에 대한 포인터의 배열이기 때문입니다.사용자 정의 블록 할당자를 사용하여 배열에 넣은 포인터를 할당 할 때 현금 문제가 해결되지 않습니까?
사용자 지정 할당자를 만들어서이 문제를 해결하고 싶습니다.이 할당자를 사용하여 배열에 포인터를 넣습니다. 할당자는 모든 객체가 메모리에서 항상 서로 옆에 있고 블록으로 정렬되도록합니다. 그 배열을 반복 할 때 현금 누락 문제를 해결합니까?
자세한 내용 : 내가 객체를 ALLOC 때 사용자 지정 할당을 만들 것입니다
는,이 할당은 모든 개체를 처리 할 수있을만큼 큰 메모리 블록을 ALLOC 것, 나중에이 할당은 블록 내의 여유 공간을 선택합니다 매번 모든 객체를 다른 객체의 옆에 놓기 위해 한 번에 캐쉬 메모리에로드되어 더 적은 현금 손실을 초래합니다.
무엇을 원하십니까? 나는 당신의 제안 된 솔루션을 의미합니다. – gsamaras
사용자 지정 할당자를 생성합니다.이 할당자가 모든 객체를 처리 할만큼 큰 메모리 블록을 할당합니다. 나중에 객체를 할당 할 때마다이 할당자는 그 블록 내의 여유 공간을 선택하여 모든 객체가 다음에 배치되도록합니다 다른 사람에게, 그들은 현금 기억에 즉시 적재되고 현금 미스가 덜 발생할 것입니다. –