针对本地机器规格调整的 R 中的相对基准测试

Relative Benchmarking in R adjusted for Local Machine Specs

我对 R 中的基准测试有疑问。与用户定义的函数相比,如何适当地估计函数的相对速度。

假设我有 3 个用户定义函数 f、g 和 h,我想报告 g 和 h 与 f 相比在速度方面的表现如何。测量其中的每一个都不是问题(我确实知道几个库)并且将 g 的速度除以 f 的速度是一个不错的主意。 但是我怎样才能以一种不太依赖我的本地机器和 OS (或者这甚至是必要的)的方式调整这个测量? 当然,100% 的精确度似乎不太可能,但我的最终目标是拥有一个度量标准,使用户或学生无需检查我和她的规格就能感受到速度的提高有多大。

那么,我在寻找什么?

最后的评论:我对不同机器的访问是有限的,所以只是测试它并查看它们的行为是一种选择,但我的最后一个。相反,我更喜欢一个好的近似值。

两个函数的相对性能比在不同的硬件上可能会有所不同。例如一个可能对 FMA 吞吐量更敏感(并且在 Zen1 或 Intel pre-Haswell 上落后),而另一个(可能使用查找 table 或记忆)可能对缓存占用空间更敏感,并且速度变慢一些阈值大小取决于机器的 L2 和 L3 缓存大小。

可能有用的东西(在一台机器上)是针对不同问题大小的简单相对性能(时间比),时间(g)/时间(f)和时间(h)/时间(f)

所以您可以绘制 y = 性能(以微秒为单位)对 x = 所有 3 个函数的问题大小,以查看性能曲线的绝对形状。

您可以单独绘制相对性能图,以查看相对于您的基线哪个地方更快或更慢。

如果除了单一尺寸之外还有其他参数,那么就会有更多问题space需要用图来探索...