社区
Java
帖子详情
单进程下,调用一个函数的代价有多小?
sleepingboy
2003-11-05 12:00:55
在《重构--改善既有代码的设计(中文版)》中,有一句话,“在单进程软件中,你永远不必担心多么频繁的调用某个函数,因为函数的调用成本很低”。(P106)
调用一个函数的代价为什么会低到可以“永远不必担心”的程度呢?
...全文
48
9
打赏
收藏
单进程下,调用一个函数的代价有多小?
在《重构--改善既有代码的设计(中文版)》中,有一句话,“在单进程软件中,你永远不必担心多么频繁的调用某个函数,因为函数的调用成本很低”。(P106) 调用一个函数的代价为什么会低到可以“永远不必担心”的程度呢?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
北极猩猩
2003-11-20
打赏
举报
回复
对于Java来说调用函数没有什么性能损失的。
因为Java虚拟机本身就是一个基于堆栈的虚拟机,执行任何操作都要压栈的,函数调用没什么特殊的
对于C++来说可以inline啊
kui
2003-11-08
打赏
举报
回复
没看过《重构--改善既有代码的设计(中文版)》,不好乱对该书发表评论。但是对“在单进程软件中,你永远不必担心多么频繁的调用某个函数,因为函数的调用成本很低”一句确实不易理解,我估计这里是指占用内存资源吧,而不是指占用CUP时间。
sleepingboy
2003-11-08
打赏
举报
回复
没人看过《重构》??
truezerg
2003-11-06
打赏
举报
回复
再你没有把表看针的时间缩短以前,你“永远不必担心”抬手所花费的时间
truezerg
2003-11-06
打赏
举报
回复
如果你看一次手表花在看表针是几点的时间上是30分钟而抬起手的时间是3秒钟,你会认为你抬一百次手很费力吗?
廖雪峰
2003-11-06
打赏
举报
回复
函数调用的成本:
1.CPU把相关寄存器压栈
2.转到函数体执行
3.执行完毕后恢复寄存器
花费就在1,3上,但是相对一个复杂算法来说这点时间微不足道。
把算法的效率提高1%就比优化这些函数调用强
sleepingboy
2003-11-06
打赏
举报
回复
为什么要强调“单进程”呢?
文中的意思似是说,及时几乎什么都不做的“委托”函数
也不用担心频繁调用
几乎没代价
alexll
2003-11-05
打赏
举报
回复
你会认为看看你的手表很费劲吗?
sleepingboy
2003-11-05
打赏
举报
回复
看一次当然没关系
可是一秒钟看100次手表呢?
怎么让我“永远不必担心”啊
系统
调用
、
进程
、线程详解
系统
调用
os提供了很多底层的重要
函数
,我们通过程序
调用
这些
函数
,被称为系统
调用
,举例: 为了保证安全性,我们并不能随意访问系统的资源,系统
函数
就是为用户提供的一种访问系统资源的安全的方式。 内核态和用户态 os通过划分内核态和用户态来达到这一隔离的目的,内核态可以访问任何数据,用户态不能访问内核数据。如Linux输入
一个
whoami命令,其实这个whoami就是
一个
系统
函数
,我们只是通过用户态去系统
调用
内核态的
函数
。 用户发起系统
调用
内核的代码的唯一方式就是中断指令int 其中用户
Linux下的多
进程
编程——fork(),exec()等
函数
的使用
Linux下的多
进程
编程初步
1 引言
对于没有接触过Unix/Linux操作系统的人来说,fork是最难理解的概念之一:它执行一次却返回两个值。fork
函数
是Unix系统最杰出的成就 之一,它是七十年代UNIX早期的开发者经过长期在理论和实践上的艰苦探索后取得的成果,一方面,它使操作系统在
进程
管理上付出了最小的
代价
,另一方面, 又为程序员提供了
一个
简洁明了的多
进程
方法。与DOS和早期的Windows不同,Unix/Linux系
Callback
函数
详解
2010年的最后一天了,转载一篇自己认为还不错的文章与大家分享。希望对大家有所帮助。
一,回调
函数
我们经常在C++设计时通过使用回调
函数
可以使有些应用(如定时器事件回调处理、用回调
函数
记录某操作进度等)变得非常方便和符合逻辑,那么它的内在机制如何呢,怎么定义呢?它和其它
函数
(比如钩子
函数
)有何不同呢?
使用回调
函数
实际上就是在
调用
某个
函数
(通常是API
函数
)时,将自己的
一个
函数
(这个
函数
为回调
函数
)的地址作为参数传递给那个
函数
回调
函数
详解
http://blog.csdn.net/tingsking18/article/details/1509224 一,回调
函数
我们经常在C++设计时通过使用回调
函数
可以使有些应用(如定时器事件回调处理、用回调
函数
记录某操作进度等)变得非常方便和符合逻辑,那么它的内在机制如何呢,怎么定义呢?它和其它
函数
(比如钩子
函数
)有何不同呢?使用回调
函数
实际上就是在
调用
某个
函数
(通常是API
函数
)时,将自...
Linux下C语言开发(
进程
控制编程——fork()、exec
函数
族)
在Linux中创建
一个
新
进程
的唯一方法是使用fork()
函数
。fork()
函数
是Linux中
一个
非常重要的
函数
,和以往遇到的
函数
有一些区别,因为fork()
函数
看起来执行一次却返回两个值。
Java
51,402
社区成员
85,918
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章