这表明浮动比双打略快: http://www.herongyang.com/cs_b/performance.html
一般情况下,每当您对性能进行比较时,您都应该考虑任何特殊情况,例如使用一种类型需要额外的转换或数据按摩吗?这些加起来并且可以像这样相信通用基准。
我几周前发了一个类似的问题。最重要的是,对于x86硬件,浮点数与双打的性能没有显着差异,除非你成为内存绑定,或者你开始遇到缓存问题。在这种情况下,浮子通常具有优势,因为它们更小。
当前的Intel CPU在80位宽的寄存器中执行所有浮点运算,因此实际的计算速度不应在浮点数和双精度数之间变化。
使用387 FPU算法,浮点只比某些长迭代操作(如pow,log等)快两倍(并且只有在编译器适当地设置FPU控制字时)。
使用压缩SSE算法,它会产生很大的不同。
我正在编写一个光线跟踪器,并为我的Color类替换浮动双打,这给了我5%的加速。用双打替换向量浮动的速度再快5%!很酷:)
那是Core i7 920
如果负载&商店运营是瓶颈,然后花车会更快,因为它们更小。如果你在加载和存储之间进行了大量的计算,它应该大致相等。
其他人提到避免浮动和放大之间的转换double,以及使用这两种类型的操作数的计算。这是一个很好的建议,如果你使用任何返回双精度的数学库函数(例如),那么将所有内容保持为双精度将会更快。
我一直认为无论是浮点还是双倍,处理器都经过优化或相同。在我的密集计算中搜索优化(从矩阵中获取大量内容,比较两个值),我发现浮点数的运行速度提高了大约13%。
这让我感到惊讶,但我想这是由于我的问题的本质。我不在操作的核心中进行float和double之间的转换,我的计算主要是加法,乘法和减法。
这是我的i7 920,运行64位操作系统。