Re[7]: Разумность 16 байтных IP-адресов - ведь глупость сделали
От: Pzz Россия https://github.com/alexpevzner
Дата: 12.11.24 17:12
Оценка: +1
Здравствуйте, netch80, Вы писали:

N>Аналогично, возьмём, например, сравнение по маске. Пусть у тебя есть три параметра: сравниваемый адрес, адрес образца и длина префикса образца (больше 0). Вариант для одного целого: вычислил маску: ~((1ul<<(64-pl))-1ul), и сравнил. Как будет выглядеть вариант для 128 бит? Если нет нативной поддержки uint128_t, будет явное ветвление в коде, дорого. Если есть uint128_t, будет неявное ветвление, с тем же результатом. Можешь посмотреть сам на компиляторный выхлоп.


Чёйта?

Заксорь сравниваемый адрес с образцом, пословно. Потом заенди с маской, тоже пословно. Потом результирующие слова, 2 64-битных или 4 32-биных, заорь побитно промеж собой. Получишь в итоге ноль или не ноль, результат твоего сравнения. Никаких промежуточных ветвлений, плюс промежуточные операции еще и запараллелиться имеют шанс в процессоре.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.