单进程下,调用一个函数的代价有多小?

sleepingboy 2003-11-05 12:00:55
在《重构--改善既有代码的设计(中文版)》中,有一句话,“在单进程软件中,你永远不必担心多么频繁的调用某个函数,因为函数的调用成本很低”。(P106)

调用一个函数的代价为什么会低到可以“永远不必担心”的程度呢?
...全文
44 9 打赏 收藏 转发到动态 举报
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次手表呢?
怎么让我“永远不必担心”啊

51,397

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧