【发布时间】:2011-01-15 02:56:35
【问题描述】:
我正在优化数字/统计库的排序函数,基于这样的假设,在过滤掉任何 NaN 并进行一些操作后,浮点数可以在不改变结果的情况下与 32 位整数进行比较,而双精度数可以比较为 64 位整数。
这似乎将这些数组的排序速度提高了 40% 左右,只要浮点数的位级表示是 IEEE 754,我的假设就成立。人们实际上是否有任何现实世界的 CPU使用(不包括在此库不针对的嵌入式设备中)使用可能会破坏此假设的其他表示?
-
https://en.wikipedia.org/wiki/Single-precision_floating-point_format
(binary32,在使用 IEEE754 的系统中又名float) -
https://en.wikipedia.org/wiki/Double-precision_floating-point_format
(binary64,在使用 IEEE754 的系统中又名double)
【问题讨论】:
-
非常有趣 - 您能否详细说明如何将它们作为整数进行比较?
-
请注意,您可能还假设整数 endian = FP endian,这在大多数(所有?)“正常”CPU 上都是正确的,但至少在理论上它们可能会有所不同在符合 IEEE754 的机器上。
标签: performance sorting floating-point ieee-754