请教大家一些问题

qingfenglz 2005-09-20 04:46:22
1 在函数调用的时候引用和指针那个效率更高了?
好象是指针,不过引用不就是变量的别名,应该比指针更快啊!
2 常引用和引用有什么不同啊?效率怎么样啊?
3 大家在用c++开发软件的时候对于它的性能关注的多不多啊?就是性能要求处于什么样的位置啊?
听说c++的并不怎么高效啊!比如说产生了很多不需要的东西啊!

是不是 啊?
...全文
138 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
pongba 2005-09-21
  • 打赏
  • 举报
回复
superlinux:-)
1.没有任何区别(前提是编译器不要太旧即可)
3.我看不出你的C跟C++编译器生成的代码有什么不同。指令一行不差。C++似乎多生成了几个标号,但那跟效率似乎没关系吧。另外我还不知道你的C++编译器为何生成那几个标号;-)
foochow 2005-09-21
  • 打赏
  • 举报
回复
好多,学习学习
SuperLinux 2005-09-21
  • 打赏
  • 举报
回复
to pongba

1.呵呵,是木有区别,偶也是这个意思。

3. 我列出来那些汇编代码,不是想说明效率的问题,是想说明会产生多余的代码。这个
例子有点简单了,可以找个有结构体的试一下。 :-)
qingyuan18 2005-09-20
  • 打赏
  • 举报
回复
c++性能还可以啊!比java快多了!
xiaocai0001 2005-09-20
  • 打赏
  • 举报
回复
我只是想问一下大家在实际工作中是不是特别关注它的效率

------------------
这要看你所做程序的具体应用,有些对时间要求高一些,有些对空间要求高一些.

实际上,常常一个好的算法能够带来程序几倍甚至几个数量级的效率提高,而这些细节方面对效率的提高并不是很显著.当然,对一些常用的,如函数参数若是一个大型的结构体或类的话,传址要比传值好不少,要有个印象,而对于其他不是很显著的,一般就不用理会了
zhousqy 2005-09-20
  • 打赏
  • 举报
回复
In general, you should use a pointer whenever you need to take into account the possibility that there's nothing to refer to (in which case you can set the pointer to null) or whenever you need to be able to refer to different things at different times (in which case you can change where the pointer points). You should use a reference whenever you know there will always be an object to refer to and you also know that once you're referring to that object, you'll never want to refer to anything else.

--- Scott Meyers
qingfenglz 2005-09-20
  • 打赏
  • 举报
回复
那是不是说我们在用c++开发软件的时候一般不会关注它语言本身这样写是否高效
而只是注重他的结构,以及它的算法
我是一个大四的学生最近看一本关于如何提高c++性能的书
我只是想问一下大家在实际工作中是不是特别关注它的效率
xiaocai0001 2005-09-20
  • 打赏
  • 举报
回复
在函数调用的时候引用和指针那个效率更高了?
------------------
在做程序效率提高时,找的是程序运行的效率瓶颈地方.
像这些问题,若不是一个很大的参数时,传值,传地址,传引用的效率差别是很小的.
没必要在这个方面深究这个到底谁快那么一点,谁慢那么一点的~~
SuperLinux 2005-09-20
  • 打赏
  • 举报
回复
1 在函数调用的时候引用和指针那个效率更高了?
好象是指针,不过引用不就是变量的别名,应该比指针更快啊!

答:原理都是一样的,效率上应该差距不大。

----------------------------------------------------------

2 常引用和引用有什么不同啊?效率怎么样啊?

答: 常引用更多的是为了数据的安全,防止以外的操作对数据进行
不应该的修改。至于效率,C++的常引用的保护只是语法级别的,
汇编的代码都是一样,效率应该一样。

----------------------------------------------------------

3 大家在用c++开发软件的时候对于它的性能关注的多不多啊?就是
性能要求处于什么样的位置啊?听说c++的并不怎么高效啊!比如说
产生了很多不需要的东西啊!

答:偶对性能的关注不是很多,仅仅限于教科书级别的效率推荐用法。
嵌入式的开发需要关注与效率。 LZ所谈到的不高效也是相对的吧。C++
的确产什么了很多余的代码
例如:
----------main.c----------
int main()
{
return 1;
}
--------------------------

用c编译器生成的汇编:
----------c.s-------------
.file "mian.c"
.text
.globl main
.type main, @function
main:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
andl $-16, %esp
movl $0, %eax
subl %eax, %esp
movl $1, %eax
leave
ret
.size main, .-main
.section .note.GNU-stack,"",@progbits
.ident "GCC: (GNU) 3.3.3 20040412 (Red Hat Linux 3.3.3-7)"
--------------------------

用c++编译器生成的汇编代码:
---------cpp.s------------
.file "main.cpp"
.text
.align 2
.globl main
.type main, @function
main:
.LFB3:
pushl %ebp
.LCFI0:
movl %esp, %ebp
.LCFI1:
subl $8, %esp
.LCFI2:
andl $-16, %esp
movl $0, %eax
subl %eax, %esp
movl $1, %eax
leave
ret
.LFE3:
.size main, .-main
.section .note.GNU-stack,"",@progbits
.ident "GCC: (GNU) 3.3.3 20040412 (Red Hat Linux 3.3.3-7)"

--------------------------

healer_kx 2005-09-20
  • 打赏
  • 举报
回复
产品,特别是那些非类库的代码,不要考虑指针和引用的效率问题。
其实我认为它们是一样的东西,本质都是指针。

常引用就是被引用对象是const的,不能修改。

一个真正的产品的效率必然不在指针和引用上,多关注程序的可维护性和可扩展性。
设计采取的体系结构和模式是重要的,然后才是算法,最后是那些细节的优化。
产品的瓶颈往往在于线程同步,程序的结构,网络,IO。

64,266

社区成员

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

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