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,定點數的運算還快一些。