Вопрос к коллегам-программистам

Sep 01, 2013 13:19


Коллеги,

В кои-то веки столкнулся с задачкой, которую я не знаю как оптимизировать. Надо побитово умножить число на матрицу.

Псевдокод:

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: Матрица - фиксированная, число изменяется.

programming

Previous post Next post
Up