腾讯游戏开发精粹
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.5 定点数的误差对比与性能测试

2.5.1 超越函数及开方的误差测试

以double(双精度)的运算函数作为测试基准,对比float(单精度)和fixedpoint(32.32)的计算误差,其中测试的对比函数有标准库的std::sqrt、std::pow、std::log、std::exp、std::sin和std::asin,两者的误差列于表2.4中。

表2.4 超越函数及开方的误差比较

在fixedpoint(32.32)能表示的实数范围内,对比double(双精度)在标准库的实现,平均误差都小于万分之一。

2.5.2 性能测试

我们在两个平台上测试浮点数(单精度)与定点数(32.32)的性能,每个测试量度运算1000000次的总耗时。测试使用的硬件如表2.5所示。性能结果列于表2.6中。

表2.5 测试使用的硬件

表2.6 性能结果(运算耗时统计,单位为ms)

其中,除除法两者差距大外,其他函数的执行都在同一个量级内,在部分情况下,例如add、sin,定点数的运算还快一些。