2 supersuperna123 supersuperna123 于 2016.04.16 21:28 提问

小白关于调用函数的问题

请问下例如要测试多组数据的大小排列可以在int main 一点一点比较 也可以在外面创建个函数比较后调用
请问这两种方法哪个方法在运行的时候更加省时间呢? 求指教谢谢了

4个回答

qq423399099
qq423399099   Ds   Rxr 2016.04.16 22:15
已采纳

时间基本上没啥明显区别
正常的带参数的函数,一般有以下几步:
1. 用push指令将参数入栈,如果是基本类型,有几个参数就需要几条push指令
2. call指令进入被调用函数,先保存IP寄存器的值,再将函数入口地址存入IP
3. 被调用函数将返回地址和基址EBP压入栈,并分配栈空间需要3条指令
pushl %ebp
movl %esp, %ebp
subl $xx, %esp
4. 函数返回时恢复栈,需要leave和ret两条指令,leave释放栈空间并恢复EBP,恢复IP寄存器的值

所以需要6条以上的指令开销,如果参数是结构体的话,需要拷贝复制指令,这个开销就大了。

提高C++程序运行效率的10个简单方法:http://www.jb51.net/article/54792.htm

caozhy
caozhy 这个回答lz可以采纳了。
2 年多之前 回复
lch900907
lch900907   2016.04.23 17:56

肯定是又区别的

调用方法带来的系统开销更大
因为调用函数需要入桟出栈
而直接使用不需要

所以直接用更快
不过建议还是按模块制作函数

方便逻辑清除 调用方便 和 多次调用节约代码空间

NabariOu
NabariOu   2016.08.23 21:09

调用耗时和你运算耗时相比相差太大,所以相比二者起来并没有什么差别

java6218
java6218   2016.04.16 21:30

时间没啥区分,基本上是一样的,但是调用方法更清晰,直关,明了。直接写在main方法中,个人感觉有些乱。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
小白的ARDUINO日志
今天是5月19日,星期一 (win7 64位INF中的服务安装段落无效解决方法) 把遗忘很久的AEDUINO的板子拿出来研究研究,遂写下这个开篇报告,以后也许会长期更新下去。在家里翻了好久终于在角落里找到了这块板子,之前买来并没有好好利用,这次就拿这个板子从头学起,现在几乎什么都忘光了,变成菜鸟了,如果有地方说的不对请及时纠正。 为什么要去搞这个ARDUINO呢?一来因为我比较喜欢这种简单的
关于AI的一些小白总结
人工智能 机器学习  深度学习;: 其实近几年AI这个名词很火,现在已经到封口浪尖上了,以前一个企业说搞AI这块,都没人敢投资,现在一听说搞AI,都抢着投资这家公司,为什么呢,因为以前的技术不够成熟,硬件不够成熟,数据不够多,最主要的好像是当时有个比较牛的人出了本书,书是非常不错的,当时提出了一个问题,说这个问题不解决,AI是得不到大的突破的,有兴趣的同学可以了解下,这就造成了之前AI 的惨淡气
2K11问题小白咨询秘笈
2K11问题小白咨询秘笈2K11问题小白咨询秘笈2K11问题小白咨询秘笈2K11问题小白咨询秘笈2K11问题小白咨询秘笈2K11问题小白咨询秘笈2K11问题小白咨询秘笈2K11问题小白咨询秘笈
关于调用函数的实参问题
#include  int add(int x,int y) { return x+y; } int main() { int i=1,j=2; int x=add(i,j); return 0; } 相应的汇编代码为 main: .LFB1: pushl %ebp movl %esp, %ebp subl $24, %esp movl $1, -12(%
给小白程序员的几点建议
接纳自己是一张白纸这个事实       我觉得这是一个首要的前提。也许你很优秀,有很强的学习能力,有强大的信念,有超强的小宇宙,有百折不挠的韧性……但是,你没做过,你确实是一张白 纸。这是一个客观事实,我们必须要要承认。我们所做的一切,都是在接纳现实的前提下展开的,唯有承认这一点,其它美好的事情才有可能。       我们平静的看待这一点,不要妄自菲薄,也不要好高骛远,从一条线开始,慢慢绘制自己的
一文看懂机械键盘,从小白到行(ru)家(shou)
网传程序员小明的女朋友送给他一把高端机械键盘。小明带到公司,引来整个部门程序员的围观和感叹。小明以为大家会夸他有位好女朋友,结果自然是想多了……  机械键盘的身影越来越多地出现在我们的视线中,各种段子、各种网传故事。当你头一回听说机械键盘,肯定会听到过轴这个概念。常见的轴体有 青、茶、黑、红 四种。刚开始,大多数人想必听的云里雾里。今天的这篇文章,图文并茂地详细介绍了机械键盘的核心组件:轴 (
【小白装系统】——常见问题解决
1.进不去BIOS 2.进不去U启环境 3.装不上系统 4.装上系统之后进不去系统
谈谈VC++中两种函数调用方式的区别
我们知道在进行函数调用时,有几种调用方法,主要分为C式,Pascal式.在C和C++中C式调用是缺省的,类的成员函数缺省调用为_stdcall。二者是有区别的,下面我们用实例说明一下: 1. __cdecl :C和C++缺省调用方式 例子: void Input( int &m,int &n);/*相当于void __cdecl Input(int &m,int &n);*/ 以下是相应的汇编代码
关于拼多多新手开店的疑问及解答
    新手在拼多多开店肯定会遇到不少问题,例如开车商品的曝光问题、系统推荐一样的竞品怎么办、活动定价低却不通过等,这些都是会影响拼多多店铺运营的。就这几点疑惑,为大家整理了4个疑问及解答。    1、为什么我两个店同样的商品开场景推广,一个店只开的商品只有几个曝光率就有几千个,另一个店开了十几个,曝光率只有几十呢?    商品基础一样吗?基础销量、有效评价和自然排名一样吗?如果不一样的话,那么在...
关于Linux,你该读哪些书
这是应读者要求写的一篇综合图书推荐文章,关于Linux的。图灵Linux经典书自然不少,另外,新出版的ARM,林纳斯大神的传纪,也深受读者欢迎。这次总结了每本书的优缺点,希望大家能找到真正适合自己阅读的书。1. 《Linux程序设计(第4版)》(经典入门书)原书名:Beginning Linux Programming 作者:Neil Matthew, Richard Stones 译者:宋健建