본문 바로가기
알고리즘

3차원 배열, 1차원 배열 같은 데이터라면 속도차이

by 고유빙글 2023. 11. 6.

이번에는 별도 알고리즘을 작성하는 것보다

개인 작업 중 잼있었던 부분을 공유해보고자 한다.

 

3차원 배열과 1차원 배열의 속도.

 

당연히 이 골자만 본다면 누가봐도 1차원 배열이 더 빠른걸 알 것이다.

 

실제 코딩을 하다보면 단순 1차적인 데이터 순회로 그치는 경우는 많지않음을 알 것이다.

그리고 이 3차원 배열이 비정형이고 양이 많을 경고 정확한 곳에 정확한 순서로 사용해야한다면

 

그렇게 3차원 배열과 1차원 배열의 총 양이 동일하다면

결과는 어떨까?

 

사실 지금의 조건으로도 1차원 배열이 더 빠르다

 

여기서 차이가 생기는건

 

{ name : a

   age : 10

   location : frorest

   child : { name : b

                age :  2

                location : ocean

                element : fire

                child : { name : c

                             element : water

                             power : 2N 

                              age : 1 } 

              }

}

 

이런식의 구조 ( 쓰다보니 나이를 적게 썼는데 미생물이라 저 사이에도 생식이 가능했다고 대충 생각하자. )

일때,

 

1차원 배열로 치환하면

{ a, 10, forest, ,'' ,'' b, 2 ,ocean, fire, '' ,c, water, '', 2N, 1 } 이렇게도 가능하고

{ a, b, c, forest, ocean, '', '', fire, wayer, '', '', 2N, 10, 2, 1 } 이렇게도 가능할 것이다.

 

이런 것처럼

어느 경우든 어디까지가 한 객체의 값인지 알 수 있어야하기때문에

점화식을 세워 n번재의 값들이 어떤 위치에 있는지 같이 표기해서 1차원이지만 이 안에서 나머지 인자들의 값을 같이 찾아줘서 순회를 시켜야하는 상황이 있었다.

                              

이 경우 객체로 구성된 3차원 배열과 이를 나열한 1차원 배열내에 점화식으로 값들을 전체 순회하는 로직을 짜보았을때

데이터 2천줄 정도까지에서는 3차원 배열이 좀 더 빨랐다.

대신 이는 자바스크립트와 자바에서 테스트해보았었는데

c라면 1차원이 좀 더 빠를 수 있다.

 

주소값이 c는 바로 옆으로 쭉 이어서 설정되기때문에

점화식을 세워 다음 값을 찾는 것의 속도가 빠른데

자바나 자바스크립트는 주소값이 어떻게 저장되어있는지 확신할 수 없기때문이다.

 

추후 c로 빌드해서도 테스트 해보아야하겠다

사실 데이터 형태를 화면의 정보를 데이터화해서 간단하게 만드는걸 구현해보다 테스트 한거라 c로 옮기기 귀찮았었다.