Skip to content

算法效率评估

算法层面,我们无非解决两个问题

  1. 找到问题的解法: 最重要的一点是,他首先能解答问题。
  2. 寻求最优解法: 其次,他需要尽可能的优化,以达到最优的性能, 一般从时间和空间两个维度来评估, 但往往在实际中,我们需要做权衡。

所以,在效率评估中,我们主要关注的是 时间维度空间维度

  • 时间维度: 评估算法执行的效率,一般用时间复杂度来表示。
  • 空间维度: 评估算法执行时所占用的内存空间,一般用空间复杂度来表示。

最终,我们需要在时间和空间维度上找到一个平衡点,以达到最优的性能。

效率评估的两种方式,一种是 事后统计法, 一种是 事前分析法

事后统计法

事后统计法,顾名思义,就是通过实际运行程序来统计执行时间,比较偏实际。

  • 优点: 直观, 真实
  • 缺点: 需要实际运行, 受环境影响大, 结果不准确

事前分析法

事前分析法,顾名思义,就是通过分析代码来预估执行时间,比较偏理论。

  • 优点: 不需要实际运行, 结果准确
  • 缺点: 需要分析代码, 结果不准确

当我们一般的评估的话,实际上还是事前分析法, 具体而言的话 复杂度分析

注意,这里并非分析出具体执行的时间,而是通过一种相对的复杂度来评估执行时间, 如 O(1), O(n), O(n^2) 等。

复杂度分析的好处在于“量执行某个算法所需的时间和空间资源,对比不同算法之间的效率”

Released under the MIT License.