比较浮动比双倍更有效吗?

时间:2015-02-09 17:30:25

标签: c++ floating-point

我认为他们在64位架构师身上是一样的。

例如我正在编写一个函数模板,我是否应该为float和double提供一个规范,或者我应该只提供一个规范需要一个double并让其他数字自动转换为double?假设考虑的唯一数字类型是float,double,int,long,unsigned int,unsigned long。

2 个答案:

答案 0 :(得分:2)

将浮点数与浮点数进行比较通常要么相同或稍快一些,而不是双倍换算为双倍,但差异通常是微不足道的。您可能正在考虑的更大性能问题是从float到double的转换,这可能是免费的或相当昂贵的,具体取决于它在何处以及如何完成。

无论哪种方式,它都不值得过多担心,除非你已经分析并发现涉及此功能的某个巨大循环的瓶颈,在这种情况下,你可以自己测试性能差异并做出相应的反应。 / p>

答案 1 :(得分:-3)

最佳解决方案:使用模板化类型。这将自动使用提供的类型,并且所有速度优化都将由编译器完成。

还是一个很好的解决方案:使用您想要支持的最大类型(通常为longdouble),有一个用于积分的函数和一个用于浮点类型的函数。

对整数类型使用浮点运算会失去精度,应该避免使用。