社区
C++ Builder
帖子详情
一个函数内的代码长短跟运行效率和内存占用有关吗?(欢迎大家讨论)
tangx100
2007-11-08 01:52:51
如题
如果一个函数内的代码太长了,把其中的一部分拿出来放到另一个自定义函数中进行调用,这样会减少内存占用吗?
一般应用程序在运行时占用内存不断增加,主要是有些指针new后没有得到释放造成的
还有其它原因吗?
跟一个函数代码长短有关吗?
...全文
295
16
打赏
收藏
一个函数内的代码长短跟运行效率和内存占用有关吗?(欢迎大家讨论)
如题 如果一个函数内的代码太长了,把其中的一部分拿出来放到另一个自定义函数中进行调用,这样会减少内存占用吗? 一般应用程序在运行时占用内存不断增加,主要是有些指针new后没有得到释放造成的 还有其它原因吗? 跟一个函数代码长短有关吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xinxa
2007-11-16
打赏
举报
回复
代码的长短跟内存的占用大小没有直接关系,在于你在设计中调用到的代码结构
前面一个仁兄说的先NULL再Delete
可我经常是先Delete再NULL
关注中....
pig4210
2007-11-15
打赏
举报
回复
跑题了吧,大家。
函数内的代码长短跟运行效率和内存占用有关吗?
代码长短并不与运行效率有很大关系,比如一句汇编语句jmp $,两个字节,能够让程序死循环。
2^N个nop,够多吧,执行起来也是飞一样。忽略不计。
我觉得运行效率在于代码转换成汇编级别后的内存操作有一定关系。如果内存操作多了,速度自然就慢了,xor eax,[esp]显然比xor eax,esp慢多了。
一段短循环,和一段过程相比,虽然代码量少,但时间长。
另外,只要有函数调用就会有系统开销,如果调用过于频繁,这些开销就不能忽视了。这也就是为什么提倡使用online函数的原因。
tangx100
2007-11-15
打赏
举报
回复
但在屡次new和delete之间产生的空余小内存(此不易被分配),可能会导致无用的内存碎片
wenyongjie
2007-11-15
打赏
举报
回复
new 一个指针不用后,最好先NULL后再Delete,避免野指针的出现(不知这样子说对不?)
nuistcola
2007-11-14
打赏
举报
回复
如果new了一个结构指针变量
在不用时delete后,是否真释放了内存?
是的,将delete将该指针指向的内存释放,并把指针置NULL。
分解函数一般是为了使函数更加清晰,功能性更强,查找错误更方便,并不减少内存占用,反而会增加一些掉用的开消,当然不是太大。
cczlp
2007-11-14
打赏
举报
回复
内存不断增加,和代码量没有关系,和代码内容有关。
tangx100
2007-11-14
打赏
举报
回复
如果new了一个结构指针变量
在不用时delete后,是否真释放了内存?
tangx100
2007-11-09
打赏
举报
回复
在一个运行程序中我曾经用SetProcessWorkingSetSize函数来使内存极度减少,这个方法从表面上来挺不错
内存是减少了,但虚拟内存却不断增加,所以从根本上也没有改变内存占用问题
crescent_star
2007-11-09
打赏
举报
回复
代码中调用函数跟内存的占用没有什么大关系
使用函数一是为了使整个程序的整体结构清晰,也是为了方便以后的调用
整体的一个oo思想
laowang2
2007-11-09
打赏
举报
回复
代码长短跟程序的体积有关,不会跟运行效率和内存占用有关.
「已注销」
2007-11-08
打赏
举报
回复
应该没有关系吧,效率应该和系统的结构、算法有关系,当然内存管理也是比较关键的。
i_love_pc
2007-11-08
打赏
举报
回复
也不是绝对的!
tangx100
2007-11-08
打赏
举报
回复
的确!
代码不要重复,这点很重要
i_love_pc
2007-11-08
打赏
举报
回复
函数的作用还在于不用编写重复的代码!
占用内存的大小决定于程序的需要,只要避免不必要的浪费和注意垃圾的回收就可以了。
至于更高级的内存管理模式偶也不懂!
tangx100
2007-11-08
打赏
举报
回复
谢谢i_love_pc 的答复
单独写函数也在于一次只做一件事情及易于理解
那如何避免内存占用太大呢?
i_love_pc
2007-11-08
打赏
举报
回复
是否需要单独写函数看功能的需要,跟占用内存关系不大。
matlab提高循环
运行
效率
,提高MATLAB
运行
效率
提高MATLAB
运行
效率
提高MATLAB
运行
效率
用过Matlab的人都知道,Matlab是一种解释性语言,存在计算速度慢的问题,为了提高程序的
运行
效率
,matlab提供了多种实用工具及编码技巧。 1. 循环矢量化 Matlab是为矢量和矩阵操作而设计的,因此,可以通过矢量化方法加速M文件的
运行
。矢量化是指将for循环和while循环转换为等价的矢量或矩阵操作。下面给出一个循环的例子: i=0;...
时间复杂度
我们在程序开发过程中为了衡量一个算法的好坏制定了两个标准和,因为程序
运行
的时间
长短
和
占用
内存
的大小直接影响到程序的执行
效率
。但我们需要注意程序
运行
的时间
长短
不仅仅取决于
代码
,还有
运行
环境、硬件、数据量等因素影响,什么意思呢?:当一段相同的
代码
同时在2C4G和4C8G上的机器
运行
因为机器计算力不一样,所以程序
运行
时间大概率不同(特别是
代码
计算量大时)。:当一台机器上大部分资源被其它服务所
占用
,另外一台机器上面没有其它服务,那么一段相同的
代码
在两个硬件相同机器上执行时间
长短
会不一样。
程序
效率
〔八〕 =====[ 程序
效率
]===== ?8-1 :编程时要经常注意
代码
的
效率
说明:
代码
效率
分为全局
效率
、局部
效率
、时间
效率
及空间
效率
。全局
效率
是站在整个系统的角度上的系统
效率
;局部
效率
是站在模块或
函数
角度上的
效率
;时间
效率
是程序处理输入任务所需的时间
长短
;空间
效率
是程序所需
内存
空间,如机器
代码
空间大小、数据空间大小、栈空间大小等。 ?8-2 :在保证软件系统
一条SQL能占多大
内存
?
初学计算机时,我经常琢磨的一个问题是:一个进程到底能吃多大
内存
,能把系统
内存
吃完?学了数据库后,我又开始问自己类似的问题,一条 SQL 能把数据库
内存
全部吃完?假设数据库系统
内存
有128...
C语言空间问题,以及
函数
的运用
进程
内存
布局任何一个程序,正常
运行
都需要
内存
资源,用来存放诸如变量、常量、
函数
代码
等等。这些不同的内容,所存储的
内存
区域是不同的,且不同的区域有不同的特性。俗话所说知己知彼方能百战百胜,因此我们需要研究
内存
布局,逐个了解不同
内存
区域的特性。每个C语言进程都拥有一片结构相同的虚拟
内存
,所谓的虚拟
内存
,就是从实际物理
内存
映射出来的地址规范范围,最重要的特征是所有的虚拟
内存
布局都是相同的,极大的方便内核管理不同的进程。
C++ Builder
13,826
社区成员
102,678
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章