공부/기타

1차원 배열과 2차원 배열의 성능 및 속도 차이

셩잇님 2022. 12. 21. 23:40
반응형

 

 

대게 일반적으로 2차원 배열보다는 1차원 배열을 사용하는 것이 더 빠릅니다. 왜냐하면, 1차원 배열의 값들은 메모리 블록들이 서로 인접한 위치에 저장되어 있어 프로세서가 보다 효율적으로 접근하여 사용할 수 있기 때문입니다. 반대로 2차원 배열의 값들은 메모리 들록들이 서로 인접한 위치에 저장되어 있지 않고, 힙 영역의 전체에 흩어져 있을 수 있으므로 프로세서가 1차원 배열보다 효율적으로 접근하기 어려울 수 있습니다.

 

즉, 2차원 배열보다 1차원 배열이 더 좋은 이유는 '오버헤드가 발생하지 않는다.'는 것입니다. 2차원 배열은 다차원으로 구성된 배열이므로 세로로 위치한 인자값를 읽을 때 내부적으로 메모리 포인터가 가로로 위치한 1차원 배열을 찾을 때 보다 건너뛰어야 하는 값이 더 크기 떄문입니다. 다음은 C++에서 1차원 배열 및 2차원 배열 선언하고 초기화하는 방법의 예입니다.

#include <iostream>

int main()
{
    // Declare and initialize a 1D array with 5 elements
    int a1[5] = {1, 2, 3, 4, 5};

    // Declare and initialize a 2D array with 2 rows and 3 columns
    int a2[2][3] = { {1, 2, 3}, {4, 5, 6} };

    // Access an element of the 1D array
    std::cout << a1[2] << std::endl;  // Output: 3

    // Access an element of the 2D array
    std::cout << a2[1][2] << std::endl;  // Output: 6
}

 

물론 1차원 배열과 2차원 배열의 성능 차이가 배열의 크기가 작을 경우에는 별로 중요하지 않습니다. 아울러 두 배열이 가지고 있는 유형과 크기, 또 어느 곳에서 코드가 실행되느냐 등 다른 간접적인 영향에 따라서 배열의 성능에 영향을 미춥니다.

 

속도와 성능을 위해 늘 항상 1차원 배열을 써야되는 것은 옳지 않은 생각이므로, 성능을 최적화하려고 시도하기보다는 필요한 순간 및 적절한 시점에 가장 적합한 데이터 구조를 사용하는 것이 가장 올바릅니다. 그럼에도 불구하고 코드의 성능을 측정해서 '극한의 이득을 추구하겠다!' 하시는 분들은 프로파일러 기능을 이용하는 것이 가장 좋은 방안이라고 생각합니다.

 

 


 

 

출처 : https://copynull.tistory.com/100

 

2차원배열을 1차원배열처럼

[출처 : http://semicolon238.com/333] 프로그래밍을 하다보면 여러가지 난관에 부딧친다. 이는 정적인 부분에서도 마찬가지인데, 그난관이란 대체적으로 논리문제 아니면, 내가 만든함정문제 아니면,

copynull.tistory.com

 

 

 

반응형

'공부 > 기타' 카테고리의 다른 글

나누기 연산자는 왜 다른 연산자에 비해 느릴까?  (0) 2022.12.22
float이 빠를까?, double이 빠를까?  (0) 2022.12.22
32비트 시스템과 64비트 시스템의 차이  (0) 2022.09.30
HCI와 UX  (0) 2018.09.27
1. Python  (0) 2018.01.11