我做了一些计时测试,也阅读了一些文章,比如 this one (最后一条评论),看起来在 Release 构建中,float 和 double 值花费相同的处理时间。
这怎么可能?当 float 与 double 值相比精度较低且较小时,CLR 如何才能在相同的处理时间内获得 double 值?
最佳答案
至少在 x86 处理器上,float
和 double
将分别由 FPU 转换为 10 字节的实数进行处理。 FPU 没有针对其支持的不同浮点类型的单独处理单元。
float
比 double
快的古老建议在 100 年前应用,当时大多数 CPU 没有内置 FPU(而且很少有人有单独的 FPU芯片),因此大多数浮点运算都是在软件中完成的。在这些机器上(由熔岩坑产生的 Steam 提供动力),使用 float
更快。现在,float
的唯一真正好处是它们占用的空间更少(只有当您有数百万个时才重要)。
关于c# - float 与双重性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/417568/