청크 크기가 종종 2의 거듭 제곱 인 이유는 무엇입니까?


15

많은 Minecraft 클론이 있으며 내 구현을 위해 노력하고 있습니다. 지형 렌더링의 원칙은 지역화 된 변경 노력을 줄이기 위해 전 세계를 고정 크기 청크로 묶는 것입니다.

Minecraft에서 청크 크기는 지금까지 16 x 16 x 256입니다. 그리고 클론에서 나는 항상 2의 거듭 제곱 크기의 덩어리를 보았습니다.

성능이나 메모리와 관련된 이유가 있습니까? 나는 2의 힘이 이진 컴퓨터에서 특별한 역할을한다는 것을 알고 있지만 청크 크기와 어떤 관련이 있습니까?


1
계속 2로 나누고 짝수를 얻을 수 있다는 것이 좋습니다. (완전한 답변은 아니지만 같은 숫자를 사용하는 데 유용한 것 2^n)
ashes999

답변:


27

이는 게임과 청크에 사용되는 인덱싱 구조에 따라 다릅니다. 그렇게 높은 수준에서는 메모리 나 특정 성능 향상과 관련이 없을 것입니다. 아마도 청크 크기를 예측 가능한 방식으로 결정하는 것은 임의의 결정입니다. 비트 시프트를 사용하여 2의 거듭 제곱이 아닌 숫자로는 불가능한 계산 및 색인 트릭을 허용합니다.

예를 들어, 2의 거듭 제곱으로 계산하는 것은 이진수로 비트를 이동하는 것만 큼 쉽습니다.

Dec =  Bin
1   =  000001
2   =  000010
4   =  000100
8   =  001000
16  =  010000
32  =  100000

이러한 단축키가 사용되는 위치는 개발자와 그들이 해결하려는 문제에 따라 다릅니다.

청크를 만들 크기를 결정하고 다른 측면에서 중요하지 않은 경우 익숙하고 사용하는 이점이있는 것을 사용할 수도 있습니다.


15

첫째, 2의 거듭 제곱은 임의의 숫자를 곱하는 것보다 훨씬 저렴합니다. 비트 이동으로 수행 할 수 있기 때문입니다 합니다. 입니다. 대부분의 경우 컴파일러에서이 작업을 수행 할 수 있으므로 코드에 "* 16"을 쓸 때마다 컴파일러는 실제로 4 씩 시프트를 수행하므로 걱정할 필요가 없습니다. 이런 식으로 데이터 구조를 설계하여 기회를 컴파일하십시오.

둘째, 컴퓨터의 캐시 라인, 메모리 버스 및 기타 정보 고속도로는 2의 거듭 제곱을 사용하도록 설계되는 경향이 있으므로 이러한 방식으로 전체적으로 더 나은 성능을 얻을 수 있습니다.

셋째, 우리의 오래된 괴짜들은 2의 거듭 제곱으로 놀기에 익숙하기 때문에 습관입니다.

넷째, 하드웨어와 컴파일러를 설계하는 다른 오래된 괴짜들도 2의 거듭 제곱을 좋아하므로 조만간 변경되지 않을 것입니다.


2
+1 "3 번째, 우리의 오래된 괴짜들은 2의 힘으로 놀러 다니기 때문에 습관입니다." 이것이 주된 이유 일 것입니다 .
Laurent Couvidou

9

이진 컴퓨터에서 2의 거듭 제곱은 좋은 둥근 숫자입니다.

평범한 사람이 어떤 목적으로 임의의 숫자를 선택해야 할 때, 그들은 일반적으로 자신이 편한 숫자 체계에서 기초 10을 선택합니다. 따라서 그들은 10, 100, 1000 등을 선택합니다. 간단하고 쉬우 며 많은 생각이 필요하지 않으며 정확한 가치는 그들에게 실제로 중요하지 않았으며, 그들은 단지 일반적인 규모의 규모를 목표로했습니다.

프로그래머로서, 어떤 목적으로 임의의 숫자를 선택해야 할 때, 우리는 일반적으로 숫자 2가 컴퓨터 컴퓨터에서 사용하는 숫자 2를 선택합니다. 따라서 2, 4, 8 등을 선택합니다. 쉽고 많은 생각을 요구하지 않고 정확한 가치는 우리에게 실제로 중요하지 않았으며, 우리는 단지 일반적인 규모를 목표로했습니다.

그보다 더 복잡하지는 않습니다. 그들은 단지 좋은 둥근 숫자입니다.


6

다른 답변에서 언급되지 않은 한 가지 이유는 필요한 경우 반올림 문제없이 두 숫자의 거듭 제곱을 항상 반으로 줄일 수 있기 때문입니다. 이것은 아마도 Minecraft 클론의 이유는 아니지만 밉맵이 있는 텍스처와 같은 다른 경우 입니다.


2

또 다른 잠재적 이유는 각 청크에 대한 정보를 3D 텍스처로 인코딩 할 수 있기 때문입니다. 대상 하드웨어가 3D 텍스처를 지원했지만 완전히 강력하고 일반적인 2의 제곱이 아닌 텍스처를 지원하지 않은 경우 (저는 상당히 낮게 촬영하고 싶다고 인정) 청크 크기를 2로 설정하는 것은 아닙니다. 이상적입니다-필수입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.