2016-12-06 3 views
0

스택 및 힙 변수에 대한 액세스 속도에 대한 많은 주제가 있지만 정적 변수 및 힙 변수에 대한 액세스 속도에 대한 질문과 대답을 찾을 수 없습니다.정적 및 힙 메모리에 대한 액세스 속도

개체 수명이 프로그램 수명과 동일한 경우 액세스 속도면에서 무엇을 선호합니까? 어떤 것이 더 빠릅니다 - 힙에 정적으로 할당 된 객체 또는 객체를 사용합니까?

관련성이있는 경우 C++에 대해 이야기하고 있습니다.

+1

대부분의 최신 운영 체제에서는 아무런 차이가 없습니다. –

답변

2

차이는 없습니다. 전혀. 일단 프로그램이로드되면, CPU는 어떤 종류의 메모리 (힙 또는 정적)를 처리하고 있는지 알지 못합니다.

위의 내용은 가장 일반적인 CPU 아키텍처/구현의 95 %에 해당합니다. 일부 컴퓨터는 다른 속도로 작동하는 메모리 영역이 다를 수 있습니다. 이 경우에이를 확인해야합니다. 이 메모리가 매핑되는 방식 - 이것은 디자인에 따라 다릅니다.

정적 영역이 큰 컴파일러/환경 프로그램에 따라 다소 느리게로드 될 수 있습니다. 그러나 이것이 절대적인 규칙은 아닙니다.

데이터의 지역성 (데이터 조각이 서로 가깝게 있는지 여부)과 한 값이 CPU 캐시의 다른 값을 어떻게 차감 할 것인지 생각하는 것이 좋습니다. 캐시에로드하는 항목은 이미 캐시에있는 항목에 액세스하는 것보다 10-100 배 느립니다. 이것은 매우 눈에 띄는 차이를 만들 것입니다.

+0

답변 해 주셔서 감사합니다. 데이터 지역 및 프로그램 아키텍처는 문제의 범위를 벗어납니다. 난 그냥 정적/힙 메모리에 대한 실제 액세스 시간에 대한 좋은 정보를 찾을 수 없습니다 그것에 대해 물어 커뮤니티. – avtomaton