为了账号安全,请及时绑定邮箱和手机立即绑定

C++ 两种代码写法的效率比较

C++ 两种代码写法的效率比较

守着星空守着你 2019-04-09 20:24:01
源代码://Blahblah~{//////////////////////////////////写法一BEGIN//charrealc=(char)c;//outString->append(&realc,1);//写法一END//////////////////////////////////////////////////////////////////为什么写法二是"moreefficientfunctioncall?"*outString+=(char)c;//somewhatmoreefficientfunctioncall.////////////////////////////////++i;}//Blahblah~而重载的+=运算符的操作是这样的这个函数写在类定义里~应该会转化成内联(?)//+=operator.MapstoappendMyString&operator+=(charsingle){returnappend(&single,1);}这样会不会提高代码效率?为什么?
查看完整描述

2 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

第一种写法在栈内存中开了一个char和一个MyString*,第二种写法也一样,就算编译器优化能认出来使用内联,但由于有强制类型转换,char的栈内存仍然省不下。
效率的提升我估计没有。这个写法的“效率提升”在于提高代码的自我说明力,减轻人类的阅读负担。毕竟程序员的阅读代码的时间是很宝贵的,在软件的维护阶段尤其如此。
                            
查看完整回答
反对 回复 2019-04-09
?
桃花长相依

TA贡献1860条经验 获得超8个赞

代码的效率除了执行效率还应该包括维护效率。
比如第二段代码的+=,有过哪怕一丁点儿编程经验的人都会一眼看懂,不会在读代码的时候反复揣摩你这行代码到底是什么意思,这样节省了他的时间,也节省了你去跟他反复讲明白的时间。
在执行效率并无太大区别的时候,选择符合人眼阅读习惯的代码,这本身也是一种效率的体现。
                            
查看完整回答
反对 回复 2019-04-09
  • 2 回答
  • 0 关注
  • 291 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信