이번에는 별도 알고리즘을 작성하는 것보다
개인 작업 중 잼있었던 부분을 공유해보고자 한다.
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로 옮기기 귀찮았었다.
'알고리즘' 카테고리의 다른 글
퀵정렬 설명과 함께 작성한 코드 (1) | 2023.06.06 |
---|---|
페이징에 대한 이해 (0) | 2023.04.24 |
분수의 덧셈 ( 프로그래머스 문제, 코드 없음 ) (1) | 2023.04.24 |
BOJ3052 - 서로 다른 나머지의 개수 (0) | 2022.01.13 |
StringBuilder, StringBuffer (0) | 2022.01.11 |