我经常看到代码将整数转换为双精度浮点数,再将其转换回整数(有时出于良好的原因,有时不是),我突然想到这似乎是程序中的“隐藏”成本。假设转换方法是截断。
那么,它到底有多昂贵呢?我相信它取决于硬件,所以让我们假设一个较新的英特尔处理器(如果您喜欢Haswell,我会接受任何处理器)。一些我感兴趣的指标(但好答案不必具备所有指标):
- 生成的指令数量
- 使用的处理器周期数
- 与基本算术运算相比的相对成本
我还假设我们最敏锐地体验到缓慢转换的影响方式是与功率使用相关,而不是执行速度,考虑到每秒可以执行多少计算相对于每秒实际可以到达CPU的数据量的差异。