程序性能分析

64 篇文章 0 订阅

空间复杂度

  • 该程序运行所需内存大小

程序所需要的空间主要由以下部分构成:

  • 指令空间( instruction space ):是指编译之后的程序指令所需要的存储空间。
  • 数据空间( data space ):是指所有常量和变量值所需要的存储空间。它由两个部分构成: 1. 常量和简单变量所需要的存储空间。2. 动态数组和动态类实例等动态对象所需要的空间。
  • 环境栈空间( enyjronment stack space ):用来保存暂停的函数和方法在恢复运行时所需要的信息。
  • 每当一个函数被调用时, 下面的数据将被保存在环境栈中:
    ●返回地址。
    ●正在调用的函数的所有局部变量的值以及形式参数的值(仅对递归函数而言)。

可以把一个程序所需要的空间分成两部分:

  • 固定部分。它独立于实例特征。这一部分通常包括指令空间(即代码空间)、简单变量空间和常量空间等。
  • 可变部分。它由动态分配空间构成和递归栈空间构成。前者在某种程度上依赖实例特征,而后者主要依赖实例特征。任意程序P所需要的空间可以表示为: c+S (实例特征)。

时间复杂度

  • 运行程序所需要的时间
  • 估算一个程序或函数的时间复杂度,一种方法是选择一种或多种关键操作, 例如:加、乘、比较等,然后确定每一种操作的执行次数。使用这种方法成功与否取决于是否能够找到耗时最大的操作。
  • 一个程序步(a program step)可以大概地定义为一个语法或语义上的程序片段,该片段的执行时间独立于实例特征。
  • Tsum(n)是函数sum从初始调用到结束调用时stepCount的增值。在分析一个递归函数的步数时,通常可以得到一个递归公式(例如,Tsum (n)=m +Tsum (n-1), n>0,且sum (0)=m)。

渐进记法

  • 主要确定的是:复杂函数中的最大项

  • 令 p(n)和q(n)是两个非负函数。称p(n)渐近地大于q(n) ( p(n)渐近地优于
    q(n)),当且仅当:
    在这里插入图片描述
    称q(n)渐近地小于p(n)。当且仅当任何一个都不是渐近地大于另一个,称p(n)渐近地等于q(n)。

渐进顺序
  • 1 < log n < n< nlog n< n^ 2 < n^ 3 < 2 ^n <n!

大O记法

  • 渐近记法( asymptotic notation )描述的是大实例特征的时间或空间复杂度。我们将用它表示法f(n)=O(g(n)) :代表f(n)渐近小于或等于g(n)
  • 例子:
    在这里插入图片描述
    在这里插入图片描述

渐进记法:Ω,Θ

  • 记法f(n)=Ω(g(n)) :表示f(n)渐近大于或等于g(n)。因此,在渐近意义上,g(n) 是f(n)的下界。
  • 记法f(n)= Θ(g(n)):表示f(n)渐近等于8(n)
  • 例子
    在这里插入图片描述
先确定程序执行的总步数,再确定复杂度
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值