我检查了一下,可以找到许多有关float vs double性能的文章(here是其中一个,而here是另一个)。据说在大多数情况下,它们具有相同的性能,因为它们由FPU转换为10再见实数。但是我仍然不相信。如果适当考虑了地点问题该怎么办?考虑对大量位进行按位XOR,如果数据适合高速缓存(浮点型),则不计数0位将花费更少的时间。使用常规(非SIMD指令)进行XOR和位填充计数将大大延长处理时间。
我试图编写一些测试来确认它,但是要使所有内容正确并不容易。

一个问题是这两种类型在缓存中是否转换为相同的大小?

通常,我想知道是否有人可以描述这两种选择在不同情况下的行为?

最佳答案

如果适当考虑了地点问题该怎么办?


仍然一样,因为这些通常不如您所想的高。如果您只处理float和double而不是复制它,那么实际计算会花费大量时间。您的XOR示例是您认为错误的一个很好的示例。 XOR是SIMPLE EASY FAST操作,因此一致性很重要。在大多数情况下,使用浮点数可以花更多的时间进行数学运算。

关于c# - 考虑缓存的C#中的 float 与双重性能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6188429/

10-11 18:22