in reply to Re^3: Bidirectional lookup algorithm? (no redis )
in thread Bidirectional lookup algorithm? (Updated: further info.)
my understanding is that space efficiency improvements could come at the expense of (some) speed,
You are correct in that. The ultimate desire is to retain (as much of as is possible) the speed of Perl's hashes; whilst reducing the space requirement necessitated by the need for bidi lookup.
My initial brief suggested that a move from O(1) to O(logN) (with a very small constant) lookup time would be acceptable; if a 4:1 (75%) reduction in space/1:4 (400%) increase in capacity (or greater) was achieved.
However, anonymonk is also correct, in that external storage -- whether disk/SSD or remote ram via sockets -- is too slow. A simple test will show that the minimum turnaround time of sending a request to a 'remote' (even where 'remote' equates to the callback address) and retrieving the reply requires 3 times as long as a perl hash loopkup. Even when you completely exclude the actual lookup and have the request and response consist of a single byte each way.
No matter how fast the actual lookup at the remote, adding that constant to it crushes the overall goal.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^5: Bidirectional lookup algorithm? (no redis )
by polettix (Vicar) on Jan 12, 2015 at 09:17 UTC |