Здравствуйте, Shmj, Вы писали:
S>>>Напиши на C++ поиск по IP-адресам из черного списка. Сначала напиши для 8-байтных адресов (а это делается нейтивным типом), потом для 16 байт. Сравни скорость работы.
BFE>>Зачем? Скорости QSet<QHostAddress> не хватает?
S>Скорости всегда мало — представь что запросов миллионы в секунду. И каждый IP нужно как-то обработать. Естественно нейтивно поддерживаемый процессором тип будет на порядки быстрее.
Ответ от ChatGPT:
6. Алгоритм CAM (Content-Addressable Memory)
CAM — это специальная память, используемая в маршрутизаторах для поиска совпадений в один такт, что делает её крайне быстрой.
Адрес назначения пакета вводится в CAM, и она сразу возвращает префикс с наибольшей длиной совпадения.
От себя добавлю, что если для поиска использовать B-Tree с ключом в байт, то разница между 8-байтовым адресом и 16 байтовым адресом будет всего 8 операций сложения и 8 операций сравнения, что не выглядит чем-то из-за чего стоит переживать.