From 643f3925b915eae637cc5d7d9a91f8138cd411f5 Mon Sep 17 00:00:00 2001 From: EntireTwix Date: Thu, 15 Jul 2021 21:42:57 -0700 Subject: [PATCH] :books::construction: --- docs/features/GetBal().png | Bin 22815 -> 0 bytes docs/features/implementation.md | 4 ---- 2 files changed, 4 deletions(-) delete mode 100644 docs/features/GetBal().png diff --git a/docs/features/GetBal().png b/docs/features/GetBal().png deleted file mode 100644 index 8eb7b923cd502276bf4e872d83885b3f16c301a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22815 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∓^WmQu uVCNO-P5A#83I!Sh|BqDp|9oW`` its much faster, this, multi threading support, and more can be found in the [writeup](https://greg7mdp.github.io/parallel-hashmap/). ![image](https://raw.githubusercontent.com/greg7mdp/parallel-hashmap/master/html/img/stl_flat_both.PNG) ![image](https://raw.githubusercontent.com/greg7mdp/parallel-hashmap/master/html/img/lock_various_sizes.PNG) -#### Scalability -below is `GetBal()` being called where `x` axis grows with # of users reaching 10 million users, `y` axis is time in ns. The name given is random between 0 and max users at that time as to provide more accurate results. -![image](GetBal().png) -as the graph demonstrates, regardless of size `GetBal()` remains consistent at ~39ns on my 3700x single threaded. ## [xxHash](https://github.com/Cyan4973/xxHash) xxhash is used for both hashing of passwords for storage aswell as the usernames for indexing the phmap, its speed is ridiculous at faster then `memcpy` rates of Gb/s. | Hash Name | Width | Bandwidth (GB/s) | Small Data Velocity | Quality | Comment |