函数、类结构对性能的影响

bighead 2001-05-13 10:52:00
学C++一年,一些问题请内行指点
1。通过函数调用函数这种一层层调用对性能影响多大,比如将API封装
2。函数参数的多少大小对性能影响多大,是七八个参数好还是传递一个结构的引用好。
CB中的__fastcall(用register传递前三个参数)可以提高性能吗?
3。一个类的成员变量的多少、成员函数的多少对性能、资源占用的影响如何?
4。虚函数是不是比普通函数更占地方
5。我是不是该去看编译原理
谢谢!
...全文
96 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
enterzhuang 2001-05-14
  • 打赏
  • 举报
回复
1.影响多大可以通过比较获得,运行函数前后获得系统时间,然后相减可以得到估计值。
2。结构引用比多参数好。
3。变量和函数太多对性能好象没大影响,但增加理解难度。
4。一言难尽,请自己看书(其实我也不大明白)。
5。一起学习吧!
duz 2001-05-14
  • 打赏
  • 举报
回复
不需要看编译原理,但最好还是学习一下汇编,然后看一下编译后的代码。
函数调用一次需要一堆的push指令将各个参数入栈,然后一个call指令引起代码跳转,一般来说,call指令是比较费时的,对性能的影响可以看一下函数代码的大小,如果函数本身很复杂,这点影响就可以忽略了,如果函数很小,建议分装时使用inline函数(现在一般编译器会自己判断),就不会产生真正的函数调用了。
传递参数太多就需要大量的push指令,当然效率差一些,传递一个结构指针是比较好的方案,(或采用引用,那其实是一回事),__fastcall调用将几个参数通过register传递,也就是说少了几条push指令,可以提高性能。但总体来说,几条push指令花费不了多少时间,影响不大,除非函数代码很小,此时还是同样建议用inline函数。
类成员的数目对性能资源等基本上没有什么影响。
需函数比普通函数是要占更多的地方,但是内存量很小。总的来说,代码要为每个类(儿不需要为每各类的每个实现)维护一张vtable表,描述了所有虚函数的入口。对于类的具体实现,只要将vtable变量指向正确的vtable表就可以了。
最后还要说明的是,这种函数调用问题总体上来说对性能印象不是很大,而且现在一般的代码对性能要求并不是很高,不应该花费过多时间在考虑这些问题上。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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