GCC、Intel与MS C下float与double的性能对比及技术问询
现代SSE2/AVX硬件下float与double性能测试及疑问
此前已有针对x87时代float与double性能的讨论,本次基于SSE2/AVX现代硬件重新开展测试:
- 测试环境:i5-12600(Win11),选用GCC 13.1.0、Intel 2023、MSC 2022三款编译器
- 测试代码:求解开普勒方程的三次启动器
测试结果
- 除MS编译器外,float与double的性能差异极小;
- Intel编译器因实现完全向量化,性能显著更快;GCC遇到if语句时无法完成向量化;MSC则将向量寄存器当作标量使用;
- 传统x87架构的32位float代码编译后性能反而下降,结果违反直觉;
- MSVC调试环境下出现奇怪现象:修改printf字符串中的空格会大幅改变程序执行时间;
- 32位float代码存在极小范围的溢出问题,但暂未发现对性能造成影响。
疑问
- 在现代SSE2/AVX硬件上,float与double各自的优劣势有哪些?
- 希望获取该测试在其他高端CPU上的运行结果。
内容的提问来源于stack exchange,提问作者Martin Brown
相关产品推荐
相关产品推荐

