我认为他们在64位架构师身上是一样的。
例如我正在编写一个函数模板,我是否应该为float和double提供一个规范,或者我应该只提供一个规范需要一个double并让其他数字自动转换为double?假设考虑的唯一数字类型是float,double,int,long,unsigned int,unsigned long。
答案 0 :(得分:2)
将浮点数与浮点数进行比较通常要么相同或稍快一些,而不是双倍换算为双倍,但差异通常是微不足道的。您可能正在考虑的更大性能问题是从float到double的转换,这可能是免费的或相当昂贵的,具体取决于它在何处以及如何完成。
无论哪种方式,它都不值得过多担心,除非你已经分析并发现涉及此功能的某个巨大循环的瓶颈,在这种情况下,你可以自己测试性能差异并做出相应的反应。 / p>
答案 1 :(得分:-3)
最佳解决方案:使用模板化类型。这将自动使用提供的类型,并且所有速度优化都将由编译器完成。
还是一个很好的解决方案:使用您想要支持的最大类型(通常为long
和double
),有一个用于积分的函数和一个用于浮点类型的函数。
对整数类型使用浮点运算会失去精度,应该避免使用。