aappleby / smhasher

Automatically exported from code.google.com/p/smhasher
2.67k stars 469 forks source link

Quality Score #62

Open michaelpasieka opened 6 years ago

michaelpasieka commented 6 years ago

While researching various hash algorithms, I constantly see Q-score or Quality Score -- mostly 10/10.

After downloading, compiling and running SMHasher, I cannot find a reference to this score or how to compute such. I am also failing to find any description online.

Can you point me at such a description?

sebres commented 6 years ago

If you meant this one - https://github.com/Cyan4973/xxHash

Then as the description said:

Q.Score is a measure of quality of the hash function. It depends on successfully passing SMHasher test set. 10 is a perfect score.

So to check any other function, just extend the main.cpp (e. g. with new hash-function), compile and start it. For example:

mkdir smhasher/build/
cd smhasher/build/
g++ -O2 -o test ../src/*.cpp ../src/*.c
./test "your-hash-function-name"

If you'll see everywhere PASS (resp. not see ...**FAIL**...) for this function, then the "Q-score" will be 10.

Note, depending on the CPU-performance, the tests can take a long time (very long)...

michaelpasieka commented 6 years ago

I found 17 FAIL messages and thought it likely that, if none are printed, then score was 10/10.

What about a 7? Is it a straight percentage of those 17?

Thanks for your quick response.

sebres commented 6 years ago

What about a 7?

what it is exactly?

michaelpasieka commented 6 years ago

The table everyone refers to is xxhash:Benchmarks. How does one compute a Q-Score for FNV of 5, for example?

sebres commented 6 years ago

Well, why do you not ask him? :) I assume some test-failures have there just fewer precedence...