std::bitset 中作为运算符重载提供的按位运算(&、^. | 等)是否使用 AVX 或 SSE4 指令?
Does the bitwise operation (&, ^. | etc) provided as operator overloads in the std::bitset use AVX or SSE4 instructions?
由于这是依赖于实现的,唯一的方法是通过反汇编找到它吗?
Since this is implementation dependent, is the only way to find that out is through the disassembly?
是的,没有别的办法。也没有任何保证实际使用什么。
您总是可以查看 STL
来源以查看它是否使用 SIMD
,但我相信它是编译器特定的并且 STL
库不直接使用 SIMD
& AVX
。作为优化的一部分,如果可能的话,由编译器进行矢量化。
所以我宁愿查看特定循环的优化报告,看看编译器是否能够对其进行矢量化,如果不能,则说明原因。
由于这是依赖于实现的,唯一的方法是通过反汇编找到它吗?
Since this is implementation dependent, is the only way to find that out is through the disassembly?
是的,没有别的办法。也没有任何保证实际使用什么。
您总是可以查看 STL
来源以查看它是否使用 SIMD
,但我相信它是编译器特定的并且 STL
库不直接使用 SIMD
& AVX
。作为优化的一部分,如果可能的话,由编译器进行矢量化。
所以我宁愿查看特定循环的优化报告,看看编译器是否能够对其进行矢量化,如果不能,则说明原因。