-3
저는 C를 지금 배우고 있는데, CS50 edx 과정에서 작성중인 맞춤법 검사 프로그램을 위해이 해시 함수를 처음 만들었습니다.왜 비트 시프트 연산자가 내 해시 함수를 빠르게 만들까요?
int hashing(char *word)
{
unsigned int hash = 0;
for (int i = 0, n = strlen(word); i < n; i++)
hash += word[i];
return hash % HTABLE_SIZE;
}
그럼 난 비트 시프트 연산자를 사용 레딧에 hash function 우연히.
int hashing(char *word)
{
unsigned int hash = 0;
for (int i = 0, n = strlen(word); i < n; i++)
hash = (hash << 2)^word[i];
return hash % HTABLE_SIZE;
}
이 해시 함수를 사용하면 프로그램 속도가 0.13 초에서 0.06 초로 향상되었습니다. 누군가이 해시 함수가 왜 그렇게 빨리 설명되는지 제발 설명해 주시겠습니까?
프로그램을 어떻게 컴파일합니까? 완전히 최적화 되었습니까? – Evert
https://stackoverflow.com/a/6357747/6935629 – rsp
어떤 컴파일러를 사용하고 있습니까? 또한 온라인에서 [Compiler Explorer] (https://godbolt.org)를 사용하여 소스에서 생성 된 어셈블리 코드를 확인하십시오. –