博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单了解空间复杂度(Space complexity)
阅读量:4112 次
发布时间:2019-05-25

本文共 697 字,大约阅读时间需要 2 分钟。

简单了解空间复杂度(Space complexity)

空间复杂度(Space complexity)=指令空间(instruction space)+数据空间(data space)+环境栈空间(environment stack space)

指令空间(instruction space)的决定因素:编译器、编译器配置、目标机。编译器是决定代码最终占用存储空间多少的一个最为重要的因素。编译器在配置为优化模式下和非优化模式下,产生的结果也是不同的。目标机的不同也会对编译结果有影响(例如是否具有浮点处理单元)。

数据空间(data space)包括:常量和简单变量占用空间、动态数组及动态实例占用空间,两个部分。大多数编译器对于变量的存储空间都有定义,但不一定相同。

环境栈空间(environment stack space)是一个常不被人熟知部分,或许和人们不曾关注函数调用及调用结束时期的细节有关?实际上,在此过程中环境栈起着保存数据的重要作用。通常被保存的数据包括:返回地址和当前调用的函数的全部局部变量以及形式参数。环境栈空间(environment stack space)中的递归栈空间(recursion stack space)尤其值得关注。递归栈空间(recursion stack space)和递归函数的局部变量占用空间、形式参数占用空间以及递归调用深度密切相关。通常把尾递归(tail recursion)转化为迭代可以起到优化作用。

总的来说:占用空间= 固定空间+可变空间。
固定空间= 指令空间+简单变量空间+常量空间
可变空间= 动态分配空间+递归栈空间

转载地址:http://jmmsi.baihongyu.com/

你可能感兴趣的文章
JavaSE_day_03 方法
查看>>
day-03JavaSE_循环
查看>>
Mysql初始化的命令
查看>>
day_21_0817_Mysql
查看>>
day-22 mysql_SQL 结构化查询语言
查看>>
MySQL关键字的些许问题
查看>>
浅谈HTML
查看>>
css基础
查看>>
HTML&CSS进阶
查看>>
Servlet进阶和JSP基础
查看>>
servlet中的cookie和session
查看>>
过滤器及JSP九大隐式对象
查看>>
软件(项目)的分层
查看>>
菜单树
查看>>
MySQL-分布式架构-MyCAT
查看>>
设计模式六大原则(6):开闭原则
查看>>
阿里面试总结--JAVA
查看>>
Servlet的生命周期
查看>>
JAVA八大经典书籍,你看过几本?
查看>>
《读书笔记》—–书单推荐
查看>>