导航
  • 主页
  • Java SE
  • J2ME
  • Web开发
  • Java EE
  • Eclipse
  • 问答

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

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

调用一个函数的代价为什么会低到可以“永远不必担心”的程度呢?
...全文
10 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
北极猩猩 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次手表呢?
怎么让我“永远不必担心”啊
回复
发动态
发帖子
Java
创建于2007-09-28

4.6w+

社区成员

Java相关技术讨论
申请成为版主
社区公告
暂无公告