我正在优化数字/统计库的排序函数,基于以下假设,在过滤掉任何 NaN 并进行一些操作后,可以将浮点数作为 32 位整数进行比较而不改变结果,并且可以将双精度数比较为64 位整数。
这似乎将这些数组的排序速度加快了大约 40%,只要浮点数的位级表示是 IEEE 754,我的假设就成立。人们实际使用的现实世界中的 CPU(不包括在嵌入式设备中,这个库不针对)使用其他可能打破这个假设的表示?
- https://en.wikipedia.org/wiki/Single-precision_floating-point_format(binary32
,也就是float
在使用 IEEE754 的系统中) - https://en.wikipedia.org/wiki/Double-precision_floating-point_format(binary64
,也就是double
在使用 IEEE754 的系统中)