Использует ли побитовая операция (&, ^. | И т. Д.), Предоставляемая в качестве перегрузки операторов в std::bitset, инструкции AVX или SSE4?
Поскольку это зависит от реализации, единственный ли способ выяснить это - разборка?
2 ответа
Решение
Вы всегда можете посмотреть на STL
источники, чтобы увидеть, если он использует SIMD
, но я верю, что это зависит от компилятора и STL
библиотека не использует напрямую SIMD
& AVX
, Компилятор должен выполнять векторизацию, если это возможно, как часть оптимизации.
Поэтому я бы предпочел взглянуть на отчет по оптимизации для конкретного цикла, чтобы увидеть, смог ли компилятор его векторизовать, и причину, если нет.
Поскольку это зависит от реализации, единственный ли способ выяснить это - разборка?
Да, другого пути нет. Также нет никаких гарантий того, что на самом деле используется.