是否有任何可靠的数据用于基准数学库?

问题描述

我要测试一些数学函数性能,比如 pow、exp 和 log 等。有没有可靠的测试数据?

由于这些函数在 glibm 或 OpenJDK 等现有现代系统库中进行了高度优化,因此一般的随机输入可能会导致快速收敛,或触发一些短路径。

解决方法

在循环中调用它们以测试吞吐量或延迟,具体取决于下一个调用的输入是否取决于前一个调用的输出。可能包含来自中小型随机值数组的数据,用于吞吐量测试。

您希望您的编译器生成一个 asm 循环,在函数调用之外执行最少的工作,因此对于您选择的任何语言和编译器,请使用适当的技术。 (Idiomatic way of performance evaluation?)

您可能会反汇编或单步执行它们以查找依赖于数据的分支,以确定哪些输入范围可能更快或更慢。 (或者对于像 glibc 这样的开源数学库,注释源可能很好看。)