64 비트 정수만 해시를 원합니다. 나는 주어진 murmurhash3의 구현을 사용하고 있습니다. 이 제약 조건에서 코드가 약간 향상 될 수 있습니까? 나는 그것을 완전히 이해할 수는 없지만 라인 171의 for 루프가 목표라고 생각합니다. 여기에 제안 해주세요.murmurhash3 개선 제안
답변
해시 64 비트 숫자 만 필요하면 숫자 값을 사용하십시오. 모든 murmur3은 동일한 입력 번호를 동일한 입력 번호와 혼합하는 낭비 CPU주기가 발생하므로 시드 값을 변경하는 경우는 예외입니다.
당신이 정말로 고정 된 크기를 최적화하려는 경우, 당신은 복사 기능을, 그냥 약간은 (컴파일러 상수 전파하고 무거운 작업을 수행하는 상수 폴딩 가능) 변경할 수 있습니다 :
void MurmurHash3_x86_128_uint64 (const void * key, uint32_t seed, void * out)
{
const int len = sizeof(uint64_t);
//now len is a compile time constant, and can be folded when this
//function is not inlined (else it would just be a constant input,
//which could only be folded when the function is inlined)
const uint8_t * data = (const uint8_t*)key;
const int nblocks = len/16;
경우를 일부 스마트 컴파일러 (ICC, MSVC, GCC)가 기능하는 경우 감지 것,
또한template<const size_t len>
void MurmurHash3_x86_128_uint64 (const void * key, uint32_t seed, void * out)
{
const uint8_t * data = (const uint8_t*)key;
const int nblocks = len/16;
주의 : 당신 이후 단계에서 C++를 사용하고, 그것의 라인을 따라 템플릿이 점을 설정하는 의미를 만들 것 같은 상수 인수 (p artly 상수 인수 목록) 및 해당 상수를 함수로 접을 수 있습니다 (이 경우 "전체 프로그램 최적화"옵션이 활성화되어 있어야합니다).
답변 해 주셔서 감사합니다. 정말 큰 도움이되었습니다. 또한 중얼 거리는 해시를 읽을 곳을 물어보고 싶습니다. 나는 단지 알고리즘에 대한 통찰력이없는 덤불 주위를 두드리고있다. 지금은 코드 자체를 디코딩하고있다. 나는 당신이'mix' 함수를 위해 제안한 최적화를 놓쳤을 것이다. –
@AmanDeepGautam : 유일한 실제 장소는 http://burtleburtle.net/bob을 시도 할 수있는 것 이외에 이미 가지고있는 링크 (http://code.google.com/p/smhasher/) 및 소스 코드입니다. /hash/doobs.html 많은 해쉬 함수를 나열하고, 도움이 될 것입니다 (그리고 특성의 분석을 위해 http://www.team5150.com/~andrew/noncryptohashzoo/). – Necrolis
'MurmurHash3_x86_128_uint64'의 변경된 버전을 구현했지만 구현에서'fmix' 부분을 제거하지 않았습니다. 왜냐하면 "CPU주기가 낭비되었으므로"제안했기 때문입니다. 이 해시 함수가 어떻게 작동하는지에 대한 많은 증거가 없으므로이 해시 함수의 구조를 엉망으로 다루는 것이 낫지 않다고 판단했습니다. 내가 한 것은 데이터 형식을 64 비트 int로 두 번 가져 와서 64 비트 'uint62_t'로 캐스팅했습니다. 이 방법은 해시를 계산하는 메서드의 구조가 변경되지 않으며 128 비트 해시 값을 얻습니다. 이 apporach에 대한 의견을 듣고 싶습니다. –
- 1. 데이터베이스 디자인 개선 제안 제안
- 2. 음속 "저장"개선 제안
- 3. 내 작업 환경에 대한 SVN 개선 제안
- 4. 내 공유 비밀 알고리즘/방법론 개선 및 암호화 프로토콜 제안
- 5. 멀티 스레드 응용 프로그램에 대한 개선 된 접근 방법 제안
- 6. 개선
- 7. Ruby를 사용하여 'each'구문 개선 및 개선
- 8. T-SQL 문은 개선
- 9. 개선 런타임
- 10. 개선 코드는
- 11. 개선 지능형리스트는
- 12. FlashDevelop에서의 개선
- 13. 개선 '% % LIKE'쿼리
- 14. 생성자 개선
- 15. Runtime.exec() 개선
- 16. 코드 개선
- 17. MonoRail 개선
- 18. on 루프 반복 개선
- 19. SerialPort 연결 개선
- 20. 제안 작업 제안 그룹화
- 21. NSTextField에 대한 제안 제안
- 22. 브라우저 필드 제안 제안
- 23. 제안
- 24. 제안
- 25. 제안
- 26. Redis - 데이터 모델링 제안 제안
- 27. COM Interop 콜드 스타트 개선
- 28. CSS 개발 제안 대상은 누구입니까?
- 29. 개선 요청 추적
- 30. MPI 프로그램 개선
코드가 atm과 어떻게 비슷합니까? – RedX
거기에 쓰여진 코드를 수정하려고하는데 정수 필터 목록을 가지고 있고 블룸 필터를 만든 다음 멤버쉽 쿼리에 해쉬하기를 원합니다. –