理论VS实际运行时间评估

时间:2014-11-13 22:50:05

标签: performance algorithm profiling

假设有一个我们知道渐近行为的算法,例如: O(n^4)。我们想要评估该算法的真实世界性能。

现在,一种天真的方法是多次运行我们的算法,并根据输入的大小绘制运行时间。我们将在x-y平面上得到一组点。我们如何验证我们的实施是否真正O(n^4)?曲线拟合是个好主意吗?还有其他更有效的方法吗?

非常感谢。

1 个答案:

答案 0 :(得分:1)

O(N ^ 4)意味着无论N有多大,运行时间总是小于或等于C + K * N ^ 4形式的曲线,其中C和K是任意的常量。 因此,除了某种数学证明,可能是递归关系,唯一的方法是实验。

因此,您可以在其上投射一系列数据集,其中N在一定范围内变化,并绘制运行时间。 然后你拟合C + K * N ^ 4形式的曲线,在那里你试图找到C和K的最小值,试图说服自己实验数据永远不会超过曲线。

当然,这并不能证明什么,因为你无法尝试N的所有值。 即使你认为你有一个好的曲线,你也不能假设没有更高的N值会破坏你的曲线。 你可以说的是,对于N值小于或等于你所尝试的值,曲线是好的,并且机会是合理的,它仍然是好的。

相关问题