Привет. Есть код поворота векторов. Первый вариант с SIMD SSE инструкциями, второй — нет.
И вот программа для тестирования (жрет 6Gb RAM).
Прикол в том, что SSE версия работает быстрее обычной, но если убрать #if/#endif, т.е. записывать в вектор каждый раз, прежде чем его вращать, получим непропорциональный рост времени выполнения в SSE версии, так что она оказывается даже медленнее, чем обычная. Это так для моего процессора AMD FX-6300 и для многих Intel процессоров, но SSE версия всё же быстрей на атомах.
В чём тут может быть проблема? Кеш вроде не причём, я ещё понял бы, если бы я в многопоточной программе писал в общую память. pmcstat(8) вроде тоже ничего по кешу не говорит.
mashina — вроде был толковый спец