Comments (16)
This may be relevant:
Faster 64-bit universal hashing using carry-less multiplications, Journal of Cryptographic Engineering 6(3), 2016
from wyhash.
The draft becomes a version now. As you known, I update it too quickly because I stay at home due to the flu. Test it and enjoy it but no hurry to update :-)
from wyhash.
__builtin_popcountll can not used on ms vc++(_mm_popcnt_u64)
from wyhash.
done.
In order to be fast, I also provide WYHASH_PART define, which means no avalanche finalization is performed. It breaks many quallity rules, however, it offer uncompetable performance for hash table.
hash short hashmap bulk16M
wyhash_part 281.818 53.466 23.536
wyhash 258.874 47.490 23.873
from wyhash.
add support clang compiler with marco clang
from wyhash.
I am not familar with clang, can you help me by a pull request?
from wyhash.
your can download form https://github.com/llvm/llvm-project/releases/tag/llvmorg-9.0.1,
use is same as gcc on no-win os. And it can be easy integrated in vs 2017/2019.
I have change some of your code https://github.com/ktprime/emhash/blob/master/thirdparty/wyhash.h
I use wyhash in my c++ flast hash map(string key), speed is the key factor.
from wyhash.
try https://travis-ci.org/ to trigger test matrix for all supported compilers after each commit
from wyhash.
in _wyhash
function, the bulk processing part could be implemented via SSE/AVX instructions.
from wyhash.
really? I know that AVX has 32 X 32 => 64 function, but what I need is 64 X 64 =>128 function. would you give me more hints (instruction name)? thanks!
from wyhash.
PMULUDQ ?
from wyhash.
yes, 64bit MUL can only get low 64bit result now.
But vectorizing 32-bit version MUM could still speed up for long keys.
PS, v5 is a little slow for shot keys, although reducing one xor operation, but we could have to use cycles for loading memory from secret[6]
not const _wyp*
.
from wyhash.
But vectorizing 32-bit version MUM could still speed up for long keys.
the magic is 32 X 32 will fail tests, while 64 X 64 passes tests.
PS, v5 is a little slow for shot keys, although reducing one xor operation, but we could have to use cycles for loading memory from
secret[6]
notconst _wyp*
.
you can make_secret offline, write it to a include file as constant.
from wyhash.
I doubt it helps here, but my C# port uses BMI2's MULX operation, which gives both the high and parts in a single operation, providing a nice speed up.
But I would presume the C compiler would automatically use this, or an equivelant.
from wyhash.
On x64, you can always get the low and high 64-bit components in one instruction. The mulx is there mostly to help with dependencies.
from wyhash.
On x64, you can always get the low and high 64-bit components in one instruction. The mulx is there mostly to help with dependencies.
Not in .NET you don't 😖
from wyhash.
Related Issues (20)
- Version final 4 cannot be applied to data streams HOT 1
- v4 has even more bad seeds HOT 5
- Benchmark not measuring what you expect
- How do you use practrand? HOT 2
- License issue
- Using wyhash64 to mix numbers into prngs? HOT 5
- New release for wy_hash_final4?
- WyRand fails 64-bit 1-dimensional collision tests HOT 14
- Streaming hash HOT 1
- `make_secret` but for strings or other data
- Link to absl's wyhash implement seems to be changed. HOT 1
- WyRand64 (bit reversed) fails PractRand at 32TB HOT 3
- Question about wymum HOT 1
- Full round for every multiple 48-bytes, including last one HOT 1
- Secret seeds and primes HOT 4
- sprp and is_prime should be static inline?
- c-string optimized version?
- wy2u0k returns [1, k] instead of [0, k) when WYHASH_CONDOM=2
- wyhash election started HOT 1
- 是否可能给函数更多的熵 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from wyhash.