【问题标题】:What does improving a function's running time mean?提高函数的运行时间是什么意思?
【发布时间】:2016-09-28 03:47:17
【问题描述】:

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

【问题讨论】:

  • 我认为不存在任何正式的定义。 IMO 也是。运行时是运行时,我将其解释为挂钟。去 10N+0 可能会给你 10 秒或 10 分钟(完全虚构的数字)。去 5N 将使运行时间减半。去ln N 可能更多,但这一切都改进了运行时间。重要与否是另一回事。

标签: algorithm performance function big-o


【解决方案1】:

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


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

如果 N 很小 在 99% 的情况下,那么 常数因素很重要,即使它们属于同一类 O(N)。 O(10^6*N) 和 O(2*N) 都是 O(N),但是 N 在小于 10^6 时并不占优势

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


因此,用你自己的话说:“减少步数”“减少函数类”都是在减少函数的运行时间,但是一个是可观察的,因此是有用的,取决于它的使用和其他现实因素。

【讨论】:

    猜你喜欢
    • 2011-10-12
    • 2013-11-27
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 2014-12-30
    • 1970-01-01
    相关资源
    最近更新 更多