浮动比两倍慢吗? 64位程序的运行速度是否快于32位程序?
|
使用
float
型比使用double
型慢吗?
我听说现代的Intel和AMD CPU的计算速度比float快一倍。
标准数学函数(sqrt
,pow
,log
,sin
,cos
等)怎么样?单精度计算它们应该更快,因为它需要更少的浮点运算。例如,单精度sqrt
可以使用比双精度use2ѭ更简单的数学公式。另外,我听说标准数学函数在64位模式下(在64位OS上编译并运行时)速度更快。对此的明确答案是什么?
没有找到相关结果
已邀请:
6 个回复
烫珊
或
时,该变量首先从内存加载到FPU的内部寄存器中。这意味着实际计算的速度绝对没有差异,因为在任何情况下,计算都是以全80位精度进行的。唯一可能不同的是从内存加载值并将结果存储回内存的速度。自然地,在32位平台上,加载/存储ѭ1可能比ѭ0花费更长的时间。在64位平台上应该没有任何区别。 现代x86架构通过新指令支持扩展指令集(SSE / SSE2),这些指令集可以执行完全相同的浮点计算,而无需使用“旧” FPU指令。但是,我也不会期望
和
的计算速度有任何差异。并且由于这些现代平台是64位平台,因此加载/存储速度也应该相同。 在不同的硬件平台上,情况可能有所不同。但是通常较小的浮点类型不应提供任何性能优势。较小的浮点类型的主要目的是节省内存,而不是提高性能。 编辑:(以解决@MSalters的评论) 我上面所说的适用于基本算术运算。对于库函数,答案将取决于几个实现细节。如果平台的浮点指令集包含实现给定库函数功能的指令,那么我上面所说的内容通常也适用于该函数(通常包括
,
,
之类的函数) 。对于FP指令集中未立即支持其功能的其他功能,情况可能被证明有很大不同。这种功能的“ 0”版本比“ 1”版本更有效地实现。
垫歌蝎降凤
吠强祷豪硅
芳菱挨啡
还是
,这种转换速度更快取决于许多因素,必须针对给定的应用进行测量。
济畦刨
等计算功能应该比双精度计算要快得多。在C99中,即使变量为
,也可以使用
,
等函数,并获得收益。 我看到的另一个问题是内存(以及类似的存储设备)带宽。如果您要处理数百万或数十亿个值,则everything0 certainly几乎可以肯定是as1ѭ的两倍,因为所有内容都是受内存或IO约束的。在某些情况下,这是在数组或磁盘存储中使用“ 0”作为类型的一个很好的理由,但是我不认为在计算中使用“ 0”作为变量是一个很好的理由。
妒垮