改善功能运行时间意味着什么?

时间:2016-09-28 03:47:17

标签: algorithm performance function big-o

假设一个函数总共有10N + 10步。那么函数类就是O(N)。如果我想改进函数的运行时间,这是否意味着减少步数并减少函数类,使其小于线性?

1 个答案:

答案 0 :(得分:0)

如果你让它在更短的时间内运行,你就会减少一个功能的运行时间。通常有两个方向可以做到这一点:想象一下现实生活中的运行,你可以通过增强肌肉(升级到NASA超级计算机)在更短的时间内运行,或缩短你必须运行的距离(改进/改变算法以减少步骤)。我们只关注第二个方向。

还有很多因素需要考虑,比如功能的实际输入是什么?

如果 N很小 99%的时间,那么常数因素很重要,即使它们属于同一类O(N)。 O(10 ^ 6 * N)和O(2 * N)都是O(N),但当它小于10 ^ 6时N不是显性的

如果 N 通常,您仍然可以说通过减少常数因子来改进功能,但它可以忽略不计(但是你仍在减少它)。如果你需要一个可观察的提升,那么你可能需要改变算法,改变数据结构,以便将函数改进到更好的复杂性类(从O(N)到O(lg N) )例如)。

因此,使用您自己的话语:"减少步骤数量" "减少功能类" 都是减少函数的运行时间,但哪一个是可观察的,因此有用,取决于它的用法和其他现实因素。