awk는 해시맵의 충돌을 어떻게 처리합니까?

awk는 해시맵의 충돌을 어떻게 처리합니까?

별도의 링크, 공개 주소 지정을 사용 합니까 awk, 아니면 해시맵에서 충돌을 처리하는 고유한 방법이 있습니까?

동일한 알고리즘을 실행 gawk하고 구현하시겠습니까?nawk

감사해요.

답변1

확인하다https://www.gnu.org/software/gawk/manual/gawk.html#Other-Environment-Variables

이는 "gawk의 동작 방식에 영향을 미치는" 두 가지 환경 변수를 지정합니다. 한 가지 주의할 점은 이는 gawk 개발자의 테스트 및 조정을 위한 것이며 변경될 수 있다는 것입니다.

INT_CHAIN_MAX

이는 gawk가 정수로 인덱싱된 배열을 관리하기 위해 해시 체인에서 유지 관리할 예상 최대 항목 수를 지정합니다.

STR_CHAIN_MAX

이는 gawk가 문자열로 인덱싱된 배열을 관리하기 위해 해시 체인에서 유지 관리할 예상 최대 항목 수를 지정합니다.

따라서 gawk는 영향을 받는 전체 키를 단일 해시에 연결하여 키 해시 충돌을 관리합니다.

이 "max"에 도달했을 때 gawk가 무엇을 하는지는 명확하지 않습니다. 왜냐하면 단일 체인을 쉽게 구문 분석할 수 없기 때문입니다. (지금은 찾을 수 없는) 다른 자료에서 이러한 최대값은 다음과 같은 것으로 의심됩니다.평균전체 배열의 체인 길이: 평균이 초과되면 더 큰 초기 해시를 할당할 수 있고 이전 충돌을 다시 할당한 다음 모든 체인을 다시 빌드합니다.

또한 "모든 배열 인덱스는 문자열입니다"라는 것도 알아두세요. 더욱이, 작은 정수로 인덱싱된 배열을 반복하는 것은 숫자 순서로 반복됩니다(최대 수천 자릿수까지). Gawk는 예상보다 더 계몽적일 수 있습니다. 예를 들어 각 배열을 작은 정수의 직접 인덱스 조회 및 다른 문자열의 해시로 유지할 수 있습니다.

관련 정보