函数调用的时间损耗

那一片海 2011-11-07 09:37:35
根据某些参数的值按照某个计算规则计算出结果,现在有一堆需要计算的数据(10W行以上)。现有2中方式:
1.一次性把所有的数据传入计算的函数,在函数内部循环计算完毕返回计算的数据;(函数调用一次)
2.在计算函数外部进行循环,每循环一次就调用计算函数返回一个计算的值。(函数调用10W次以上)
这2中方式哪个的计算效率比较高,函数的不停调用会有很大的时间损耗吗?
...全文
708 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhy 2011-11-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dm569263708 的回复:]
引用 3 楼 keiy 的回复:
引用 1 楼 akirya 的回复:
1效率高一些

++
因为调用函数时,函数头上会有一些对栈的操作,会耗费一些时间,尾部的ret指令也耗时间.
这也是C/C++中引用inline的原因之一

这些时间的损耗是必须考虑的还是可以忽略不计的
[/Quote]
如果一次运行十万次,我觉得可以忽略,现有电脑一般函数调用时间应该小于一微秒,十万次也就0.1秒。
那一片海 2011-11-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 keiy 的回复:]
引用 1 楼 akirya 的回复:
1效率高一些

++
因为调用函数时,函数头上会有一些对栈的操作,会耗费一些时间,尾部的ret指令也耗时间.
这也是C/C++中引用inline的原因之一
[/Quote]
这些时间的损耗是必须考虑的还是可以忽略不计的
那一片海 2011-11-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 pegaso 的回复:]
有三个时间需要考虑:
参数传入的方式和耗时,
计算过程的耗时,
函数调用的开销。

在LZ所述场景中,貌似只是简单的查找、变换操作吧?这样函数开销也许可以与数据处理有一拼
[/Quote]
主要问题就是函数的开销会很大么?
turing-complete 2011-11-07
  • 打赏
  • 举报
回复
内联呗
pegaso 2011-11-07
  • 打赏
  • 举报
回复
有三个时间需要考虑:
参数传入的方式和耗时,
计算过程的耗时,
函数调用的开销。

在LZ所述场景中,貌似只是简单的查找、变换操作吧?这样函数开销也许可以与数据处理有一拼
柯本 2011-11-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 akirya 的回复:]
1效率高一些
[/Quote]
++
因为调用函数时,函数头上会有一些对栈的操作,会耗费一些时间,尾部的ret指令也耗时间.
这也是C/C++中引用inline的原因之一
lhy 2011-11-07
  • 打赏
  • 举报
回复
其实十万次函数调用也没什么,以现在的计算机来说,只要不是一秒钟十万次影响都不太大。
附带说一句如果是递归十万次肯定是不成了。
  • 打赏
  • 举报
回复
1效率高一些

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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