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