Hacker News 의견
  • 해당 개발자의 코드를 좋아하는 이유
    • JSON 라이브러리, 옵션 파싱 라이브러리, 분기 없는 UTF-8 디코더, lock-free 스택, trie 라이브러리 등이 마음에 듦
    • 위의 라이브러리들이 모두 Unlicense로 공개된 점이 마음에 듦
  • MurmurHash 개발자의 코멘트
    • multiply-shift-xor 연산이 오랫동안 잘 버텨온 것이 흥미로움을 표현
  • 자동 해시 함수 탐색에 대한 생각 공유
    • SMHasher3와 연동하여 출력을 자동으로 평가하는 것이 좋을 것 같음
      • 속도를 위해 일부 테스트만 사용하고 빠르게 실패할 수 있음
    • 64비트와 128비트 해시로 확장하는 것도 좋을 것 같음 (검색 공간이 더 크긴 함)
    • Rain 라이브러리에서 64비트 소수의 곱셈에 대한 눈사태 효과를 측정하는 NodeJS 코드를 만듦
  • 1brc 문제를 Go로 구현한 경험 공유
    • 각 역을 충돌 없이 자체 버킷에 넣는 커스텀 완전 해시 함수를 찾으려 했으나, 프로그램 시작 전에 데이터에 맞춰 해시 함수를 커스터마이징할 수 없다는 규칙 때문에 포기함
    • 무작위 상수를 확인하고 충돌하는 버킷 수와 충돌 수에 따라 지금까지 찾은 최상의 상수를 출력하는 테스트 도구를 만듦
      • 약 40%의 채우기 비율로 단 2개의 충돌 값만 있는 1개의 버킷으로 줄일 수 있었음
      • 다른 상수와 관계없이 이동할 위치 수에 대해 유사한 값이 최고 성능 상수에 포함되었다는 점이 흥미로웠음
  • 이 코드가 멋진 이유와 사용 용도에 대한 설명 요청
  • 정확히 무엇을 하는 코드인지, 최고의 해시 함수를 찾는 것인지, 그렇지 않다면 왜 매번 실행할 때마다 최고의 해시 함수가 바뀌는지에 대한 의문 제기
  • 특정 범위 내의 정수 값에 대해 좋은 해시 함수를 발견하는 메커니즘에 대한 정보 요청
    • 예를 들어 10,000에서 200,000 사이의 정수 값을 알고 있고, 이를 최적의 해시 버킷 수로 해싱하고 싶은 경우
  • 가역 연산으로 제한하면 수학적으로 좋은 점이 있지만 많은 것들이 배제된다는 의견
    • 입력 집합을 미리 알고 있는 완전 해싱에 대해 생각했음
    • 일반적으로 상수 배열을 사용하지만, 입력이 이미 작은 정수인 경우 더 압축할 수 있는지 알고 싶었음
    • 약 100개의 기본 연산 목록을 작성했지만 지루해져서 프로젝트를 진행하지 않았음
  • 두 곱셈에 동일한 상수를 사용하면 코드 크기가 줄어들어 계산 속도가 약간 빨라질 수 있다는 의견
  • 이 함수들이 암호화 연산에 적합하지 않다는 것을 인정하면서도, 측정된 "편향"이 암호 분석에 어떤 영향을 미치는지에 대한 질문
    • 차분 암호에 익숙한 사람이 설명해줄 수 있는지 궁금해함
    • 편향이 낮은 해시 함수가 더 적은 라운드 또는 계산으로 암호 분석을 무력화시킬 수 있는지 궁금해함
    • 이 도구가 더 나은 암호학적 해시 함수를 찾는 데 도움이 될 것인지 궁금해함
  • 비슷한 프로젝트 소개
    • 속도는 느리지만(인터프리터 사용) 함수의 품질이 더 좋음
    • 그러나 기존의 해시 함수보다 나은 것은 찾지 못했음