2011-11-02 5 views
1

무엇이 더 효율적입니까? 8 배열 int8 myArrayx[100] 또는 다차원 int8 myArray[8][100]? 나는 Microchip PIC 마이크로 컨트롤러를위한 CCS 컴파일러로 일하고 있으며, 가능한 한 빨리 버퍼에 써야한다. 그것이 나의 질문의 이유이다.효율성 : 8 배열 대 다차원 배열

+0

가장 자연스러운 방식으로 글을 쓰고 개선이 필요한지 결정 해 보시지 않겠습니까? – cnicutar

+0

속도를 높이려면 곱셈을 필요로하는 인덱스 myArray [i] 스타일 대신 각 연속 액세스에 대해 증가 또는 추가가 필요한 배열 요소에 대한 포인터를 사용하십시오. – Martin

+0

PIC를 사용하여 성능을 확보하려는 경우 C를 사용하지 마십시오. 사진 자체가 충분히 느립니다. 귀하의 질문에 대한 답변은 두 가지를 시도하고 생성 된 내용을 분해하고 살펴 보는 것입니다. PIC 또는 모든 플랫폼. PIC를 사용하면 사이클 수를 계산할 수 있고, 다른 플랫폼은 어셈블리를 연구하는 데 더 많은 작업과 지식을 필요로하므로 플랫폼에서 보는 것만으로도 성능 차이를 확인할 수 있습니다. "귀하의 질문에 대한 보편적 인 대답은 하나도 없습니다 :"그것은 달라집니다 ... " –

답변

6

내가 다차원 배열이 더 빠를 것이라고 생각해야합니다. 당신은 훨씬 더 좋은 기회를 가질 수 있습니다. 아마도 8 개의 개별 배열이 메모리에 "닫혀있을"것임을 확신 할 수없는 반면에 연속적인 공간에서 배열에 메모리를 배치 할 가능성이 있습니다.

+1

동기식 메모리 시스템이있는 PIC의 지역은 무엇입니까? –

3

가장 많이 액세스 할 항목에 따라 다릅니다. 하지만 별 문제는 아닙니다. 유일한 차이점은 밑받침 메모리 맵 할당입니다.

3

배열 할당 방식에 따라 다릅니다. 힙에 있으면 단일 multidim. 배열은 참조의 지역성으로 인해 많은 목적으로 더 빠르며 배열을 한 번에 할당 할 수 있습니다.이 배열은 더 간단하고 적은 오버 헤드가 발생합니다.

스택에 있거나 static 인 경우 생성 된 실제 이진 코드는 정확히 동일 할 수 있습니다.

(나는 당신이 실제로 장치에 힙이 있는지 모르겠지만, 나는 어쨌든 그것을 말할 줄 알았는데;)