C++性能优化
来源:互联网 发布:大连理工学院网络教育 编辑:程序博客网 时间:2024/06/14 05:24
1) 变virtual函数为普通函数
调用virtual函数比普通函数多出两到三个指令。如果能够把不必要的virtual函数改为普通函数,能提高效率。
关于virtual函数,可参考
http://blog.csdn.net/yeming81/archive/2010/06/16/5673139.aspx
2) 返回值优化
l 未优化前
Integer Func( const Integer& left, const Integer& right)
{
Integer a();
return a;
}
这个函数首先会构造a,然后拷贝到返回值创建的临时对象;两次构造,两次析构。
l 优化后
Integer Func( const Integer& left, const Integer& right)
{
return Integer();
}
编译器直接对返回值临时对象位置上构造一个Integer对象;一次构造,一次析构(在Debug版可以看出这种优化)。
但是,如果Release版编译时,编译器已经给你优化了,所以返回值优化本身在Release版存在了,怎么写结果都一样。
一个举例
class A
{
public:
A(){cout<<"A()"<<endl;}
~A(){cout<<"~A()"<<endl;}
A(const A& right)
{
cout<<"Copy A()"<<endl;
}
A& operator = (const A& right)
{
cout<<"operator="<<endl;
}
};
A ReturnA()
{
A a;
return a;
}
A ReturnAOpt()
{
return A();
}
A& ReturnARef()
{
A a;
return a;
}
A& ReturnARefOpt()
{
return A();
}
int _tmain(int argc, _TCHAR* argv[])
{
{
ReturnA(); //Debug: 1次A(),次copy A(),2次~A();
A a = ReturnA();//Debug: 1次A(),次copy A(),2次~A();
ReturnAOpt(); // Debug: 1次A(), 1 次~A();
A b = ReturnAOpt(); // Debug 1次A(), 1 次~A();
ReturnARef(); // Debug: 1次A(), 1 次~A();
A& c = ReturnARef();// Debug 1次A(), 1 次~A();
ReturnARefOpt();// Debug: 1次A(), 1 次~A();
A& d = ReturnARefOpt();// Debug: 1次A(), 1 次~A();
}
getchar();
return 0;
}
- c程序性能优化
- C 程序性能优化
- C代码性能优化
- [C#] WebClient性能优化
- C语言性能优化
- c代码性能优化
- .NET(C#)代码性能优化
- c程序性能优化读书笔记
- c语言编程---性能优化
- C\C++应用程序性能优化
- C语言嵌入式系统性能优化
- [c.y.j]tomcat 性能优化
- C语言性能优化与基础知识
- 9条c程序性能优化指南
- c/c++性能优化--- cache优化的一点杂谈
- c/c++性能优化--I/O优化(上)
- c/c++性能优化--- cache优化的一点杂谈
- c/c++性能优化--- cache优化的一点杂谈
- inline内联函数—macro宏的替代
- 也谈google分页
- Prof-UIS学习
- 用google突破下载
- Spring Integration (-)
- C++性能优化
- Visual C++ 编程技巧之七、八和九
- 浅谈Linux下对文件操作编程的注意点
- C++内存泄露
- 什么是SOA
- 国外十大最流行PHP框架
- STM32之GPIO
- 端午节回家
- UDT协议-基于UDP的可靠数据传输协议