Коллеги,
В кои-то веки столкнулся с задачкой, которую я не знаю как оптимизировать. Надо побитово умножить число на матрицу.
Псевдокод:
unsigned val;
unsigned A[];
unsigned res;
int i;
...
res = 0;
for (i = 0; i < 32; i++)
if (val & (1 << i))
res ^= A[i];
Пара моих попыток подойти в лоб не увенчалась серьезным ускорением.
Кто-нибудь может что-нибудь хорошее подсказать/сообразить? А то я, кажется, отвык решать такие задачи.
UPD: Получил ускорение ~30% тупо раскрыв цикл. Все равно очень медленно. Хочется чего-то более радикального.
UPD2: Матрица - фиксированная, число изменяется.