我的理解是,当使用浮动而不是双重时,SSE应该给我2倍的加速.我错了吗?
是的,你是.
编译器和你的代码一样好 - 记住这一点.如果你没有考虑到矢量化设计你的算法,编译器是无能为力的.这并不容易:"打开开关,享受100%的性能提升".
首先,编译代码,-ftree-vectorizer-verbose=N看看编译器真正实现了什么.
N是详细级别,让它5看到所有可用的输出(更多信息可以在这里找到).
此外,您可能想要阅读有关GCC的矢量化器.
请记住,对于性能关键的代码段,使用SSE/AVX内在函数(这里有出色的文档)可能是最佳选择.