免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2634 | 回复: 11
打印 上一主题 下一主题

变量的传递效率问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-20 17:22 |只看该作者 |倒序浏览
void f1(int a, int b, int c)
{
...
}
struct data {
  int a, b, c;
}
void f2(struct data *p)
{
...
}
单就传递效率而言,哪个快? 这个效率存在平台差异吗?如果参数个数再增加呢?
thanks.

论坛徽章:
0
2 [报告]
发表于 2009-01-20 17:28 |只看该作者
struct data {
  int a, b, c;
}
void f2(struct data *p)
{
...
}

我想应该是这个快吧
毕竟它只是传递指针


void f1(int a, int b, int c)
{
...
}
要复制3个变量呢

论坛徽章:
0
3 [报告]
发表于 2009-01-20 17:30 |只看该作者
变量寻址访存一次,指针两次。

论坛徽章:
0
4 [报告]
发表于 2009-01-20 18:35 |只看该作者
说到底都一样,问题是你想的越复杂生成的代码也越复杂,到时候哪个更快可就说不定了。
其实,越简单越好。

论坛徽章:
0
5 [报告]
发表于 2009-01-20 20:58 |只看该作者
原帖由 langue 于 2009-1-20 18:35 发表
说到底都一样,问题是你想的越复杂生成的代码也越复杂,到时候哪个更快可就说不定了。
其实,越简单越好。

不错,而且你想的复杂,链接出的代码不一定就是你想的那么复杂,不知道考究这个在实际情况中有多大用处?

论坛徽章:
0
6 [报告]
发表于 2009-01-21 09:46 |只看该作者
连嵌入式系统都配上几M甚至几十M的内存了
还研究传个参数对系统性能的影响就太意义了

论坛徽章:
0
7 [报告]
发表于 2009-01-21 15:00 |只看该作者
我写的这个函数有5个参数要传,5个都肯定要读,其中3个要回写,正犹豫哪个效率高呢。

论坛徽章:
0
8 [报告]
发表于 2009-01-21 15:02 |只看该作者
汗哦,现在的机器还考虑这个,我觉得没必要了把,除非嵌入式开发.

论坛徽章:
0
9 [报告]
发表于 2009-01-21 15:59 |只看该作者
原帖由 langue 于 2009-1-20 18:35 发表
说到底都一样,问题是你想的越复杂生成的代码也越复杂,到时候哪个更快可就说不定了。
其实,越简单越好。

学习了

论坛徽章:
0
10 [报告]
发表于 2009-01-21 21:59 |只看该作者
主要还是看需求吧,理论上传地址比传值(需拷贝)在绝大多数情况下效率要高。

比如如果做一个函数,在程序中要反复调用,这个时候就需要多琢磨琢磨了。

一般的话,还是多照顾代码可读性好些。

一个函数,参数设计到5个,是否复杂了点?不行的话,传进去一个结构体可能也好些吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP