首页 > 开发 > C++ > 正文

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

2017-09-11 21:35:18  来源: 网友分享

源代码:

// Blahblah~{    ////////////////////////////////    // 写法一 BEGIN    //char realc = (char) c;    //outString->append( &realc, 1 );    // 写法一 END    ////////////////////////////////    ////////////////////////////////    // 为什么写法二是"more efficient function call?"    *outString += (char) c;    // somewhat more efficient function call.    ////////////////////////////////    ++i;}// Blahblah~

而重载的+=运算符的操作是这样的

这个函数写在类定义里~应该会转化成内联(?)

// += operator. Maps to appendMyString& operator += (char single){    return append(&single, 1);}

这样会不会提高代码效率? 为什么?

解决方案

第一种写法在栈内存中开了一个char和一个MyString *,第二种写法也一样,就算编译器优化能认出来使用内联,但由于有强制类型转换,char的栈内存仍然省不下。

效率的提升我估计没有。这个写法的“效率提升”在于提高代码的自我说明力,减轻人类的阅读负担。毕竟程序员的阅读代码的时间是很宝贵的,在软件的维护阶段尤其如此。