我应该如何使用 Google 基准正确表示多变量复杂性?
How should I properly represent multi-variable complexity with Google benchmark?
Google 微基准库支持估计算法的复杂性,但一切都是通过告诉框架你的 N
的大小来表达的。我很好奇在此框架中表示 M+N
算法的最佳方式是什么。在我的测试中,我在测试中检查了 M 和 N 值的笛卡尔积。
我是否用 M+N
调用 SetComplexityN
(对于 O(MN)
算法,我假设 SetComplexityN
与 M*N
类似)?如果我想对算法的复杂性进行硬编码(相对于最适合),benchmark::oN
然后映射到 M+N
并且 benchmark::oNSquared
映射到 O(MN)
?
这不是我们在图书馆中考虑过的东西。
如果将复杂度设置为 M+N
并使用 oN
,则用于最小最小二乘法计算的拟合曲线将在 M+N
.
中呈线性
但是,如果您将复杂度设置为 M*N
并使用 oNSquared
那么我们将尝试适应 pow(M*N, 2)
这可能不是您想要的,所以我认为仍然使用 oN
是合适的。
Google 微基准库支持估计算法的复杂性,但一切都是通过告诉框架你的 N
的大小来表达的。我很好奇在此框架中表示 M+N
算法的最佳方式是什么。在我的测试中,我在测试中检查了 M 和 N 值的笛卡尔积。
我是否用 M+N
调用 SetComplexityN
(对于 O(MN)
算法,我假设 SetComplexityN
与 M*N
类似)?如果我想对算法的复杂性进行硬编码(相对于最适合),benchmark::oN
然后映射到 M+N
并且 benchmark::oNSquared
映射到 O(MN)
?
这不是我们在图书馆中考虑过的东西。
如果将复杂度设置为 M+N
并使用 oN
,则用于最小最小二乘法计算的拟合曲线将在 M+N
.
但是,如果您将复杂度设置为 M*N
并使用 oNSquared
那么我们将尝试适应 pow(M*N, 2)
这可能不是您想要的,所以我认为仍然使用 oN
是合适的。