Здравствуйте, vsb, Вы писали:
vsb>Плохое решение. Выкидывать из кеша процессора линию забивая её мусором (а если будет много таких операций — ещё и кучу линий). И это при том, что в процессоре есть специальная команда как раз для этой задачи: POPCNT.
Вопрос в том, что хочет проверить собеседующий — знание алгоритмов и способность самостоятельно их придумывать/знание тонкостей архитектуры и компилятора/понятность кода/знание побитовых операций/... . И в зависимости от того, какие задачи предстоит решать и какие инструменты использовать, правильный ответ может быть разным.
А какой компилятор и какой код оптимизирует до POPCNT? Сделал подсчёт с помощью сдвигов и битовой маски, но gcc с опциями -O3 -msse4 просто развернул цикл, но POPCNT не использовал.