Делается через GUI в Линуксе ровно столько же сколько в винде. Дальше в Линуксе консоль, а в винде реестр и консоли менеджмента (где тоже значения по ключам).
Тогда будет много коллизий. Чем больше таблица, тем меньше коллизий и тем больше памяти она занимает. При 10 млн строк получается 221 коллизия. Если таблица будет маленькая, коллизии будут очень часто проявляться.
А при удалении есть идея класть данные в сборщик мусора, который далее сам их очищает не ранее чем через определенный промежуток. Таким образом те, кто уже читали эти данные, могут продолжать это делать.
Да, я тоже думал о совместимости протоколов. Надо будет запланировать для одной из версий. Сейчас в этом пока еще мало смысла. Нужен простой текстовый для отладки в telnet и он есть.
Бинарное дерево используется как реализация разреженного массива для экономии памяти для хеш-таблицы. В итоге я получаю меньшую производительность, но и гораздо меньшие затраты в памяти. Размер ключа у меня 8, выделить 2^256 ячеек памяти по 4 байт (длина указателя) для такой таблицы нереально. Возможно есть более интересные реализации разреженного массива, было бы интересно ознакомиться.
C++ использует всю мощь процессора.
:-D