Extra Hash Function Exams
페이지 정보
작성자 Mohammed Cantwe… 작성일24-11-07 08:58 조회13회 댓글0건관련링크
본문
Within the earlier put up, I wrote about non-crypto hash features, crypto-markets commission and crypto-markets did some efficiency assessments. Turns out, it’s nice to jot down about stuff! Individuals at the feedback/twitter/internets identified extra issues I should test. So here’s a follow-up submit. This is about algorithms for "hashing some quantity of bytes", for use both in hashtables or for checksum / uniqueness detection. Depending in your scenario, there’s a whole family of algorithms for that, and I'm focusing on only one: crypto crew non-cryptographic quick hash functions.
This put up is not about cryptographic hashes. Do not learn below if it's worthwhile to hash passwords, delicate information going by means of untrusted medium and so on. Use SHA-1, SHA-2, BLAKE2 and associates. Also, I’m not specializing in algorithms that are designed to stop potential hashtable Denial-of-Service attacks. If one thing comes from the opposite facet of the web and finally ends up inserted into your hashtable, then to prevent potential worst-case O(N) hashtable habits you’re in all probability off through the use of a hash operate that does not have recognized "hash flooding" attacks.
SipHash appears to be fashionable now.
If you are hashing very small quantities of knowledge of known size (e.g. single integers or two floats or whatever), you should probably use specialised hashing algorithms for these. Listed below are some integer hash capabilities, or 2D hashing with Weyl, or perhaps you may take some other algorithm and simply specialize it’s code for your recognized input size (e.g. xxHash for a single integer). I am testing 32 and 64 bit hash features right here.
If you happen to need larger hashes, quite probably a few of these functions might be appropriate (e.g. SpookyV2 at all times produces 128 bit hash). When testing hash functions, I haven't gone to great lengths to get them compiling correctly or setting up all the magic flags on all my platforms. If some hash function works wonderfully when compiled on Linux Itanium box with an Intel compiler, that’s great for you, but if it performs poorly on the compilers I occur to use, I can't sing praises for it.
Being within the games industry, I care about things like "what happens in Visible Studio", and "what happens on iOS", and "what happens on PS4".
Extra hash operate exams! I checked each "hashing information that is aligned" (16-byte aligned tackle of knowledge to hash), and unaligned data. In every single place I tested, there wasn’t a notable efficiency distinction that I may discover (but then, I have not examined outdated ARM CPUs or PowerPC based mostly ones). The one visible impact is that MurmurHash and crypto crawler SpookyHash don’t correctly work in asm.js / Emscripten compilation targets, on account of their utilization of unaligned reads.
I’d assume they most likely don’t work on some ARM/PowerPC platforms too. Hash32 and xxHash64 - xxHash. City32 and City64 - CityHash. Farm32 and Farm64 - FarmHash. SpookyV2-sixty four - SpookyHash V2. Murmur2A, Murmur3-32, Murmur3-X64-sixty four - MurmurHash family. These are the primary features which are fascinating. SipRef - SipHash-2-four reference implementation.