별도의 링크, 공개 주소 지정을 사용 합니까 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는 예상보다 더 계몽적일 수 있습니다. 예를 들어 각 배열을 작은 정수의 직접 인덱스 조회 및 다른 문자열의 해시로 유지할 수 있습니다.