Using Uninitialized Memory for Fun and Profit
research.swtch.com
research.swtch.com
The index of the dense vector is then the record identifier, and the dense vector contains the offset of the valid record in the log database.
The record identifier is a handle to the record data. It can be reused when the record is deleted but will remain the same for the lifetime of the record.
The dense vector is very compact and may be stored and retrieved efficiently, even if stored in the log itself. The record key index stores the association between the key and the record identifier.
The GC or crash recovery process can easily locate valid records by checking if their offset matches the one found in the dense index.
So this data structure is not just of historical interest. Thanks for the link.
Basically the hash table used to compare the current input with already seen input is uninitialized, since the two values are anyway compared bit-per-bit to actually make sure there is a match.
In my time at IBM doing very performance oriented C development, saying that a server operation only took .24 seconds would get you laughed out of the development meeting as the operations were designed to take 12 microseconds.
There are few operations faster than writing a 0 to a memory address.
Sparse sets are also a great way to implement NFA state sets, where again you have a large number of possible set members but most sets are small, and you don't want to pay the O(all possible states) cost over and over.