Das war‘s für mich mit Twitter.
Nach knapp 16 Jahren wird dieser Account stillgelegt.
Sie finden mich ab sofort auf Bluesky: bsky.app/profile/arminw… - und natürlich auf meinem Blog.
Dort erkläre ich auch warum: arminwolf.at/2024/11/17/twi…
Danke für viele super Jahre hier!
#eXit
Wir müssen Neues wagen.
Die Herausforderungen sind neu. Die Lösungen sind nicht einfach. Aber sie sind möglich. Wenn wir alte Rezepte loslassen und neu denken:
@_plop_ Also note, when you have keys that are fast to compare (e.g. a uint64_t), the fingerprint is still helpful because it safes us from needing to do memory loads from random locations and just keep comparing bytes from the 8 bytes overhead thats sequentially load into memory
@_plop_ So in the 8 bytes of overhead 4 bytes index (up to 4.2 billion map size), 3 bytes offset (up to 16 mill. keys map to one bucket), and 1 byte fingerprint (1/256 = 0.4% of incorrect key comparisons) seems the most reasonable tradeoff.
@_plop_ In my older robin_hood map I only had 1 byte of distance and got in lots of trouble with that. 1 Byte is not simply not enough, and I didn't find any good tricks to make it work. E.g. rehashing with modified hash etc, stealing bits from the fingerprint, all complicate the code
@_plop_ We could go as low as e.g. 3 bits and still save 7/8 key comparisons with it. But the number of bytes for bucket distance needs to be relative large, because when we have a bad hash that maps lots of keys to the same bucket the hashmap simply not work
@_plop_ One byte is plenty. When looking up an element, that we check that fingerprint first, and only when that matches actually compare the key. So only 1/256 cases we wrongly need to do a (potential costly) key comparison. That matters e.g. for long std::string keys.
@Eva_Kimani_ I've been to Lake Como, it's a 1-day car trip from where I live. Much less tourist-y than Lake Garda. It's nice to hike there, but it was very windy at the lake. Excellent food though 👌