c++如何编程证明内联函数效率高于外联
参考如下:
#include<iostream.h>
#include<windows.h>
class point
{
int x,y;
public:
void setpoint(int xx,int yy);
int getx();
int gety();
};
inline void point::setpoint(int xx,int yy)
{
x=xx;
y=yy;
}
inline int point::getx()
{
return x;
}
inline int point::gety()
{
return y;
}
void main()
{
SYSTEMTIME t1;
GetLocalTime(&t1);
cout<<t1.wMilliseconds<<endl;
point p1;
p1.setpoint(1,2);
p1.getx();
p1.gety();
SYSTEMTIME t2;
GetLocalTime(&t2);
cout<<t2.wMilliseconds<<endl;
}
这样得到的两个时间是相同的,应该怎么改才能达到目的呢?
[解决办法]
不能
内不内联是编译器说了算 你只能建议 不能控制
[解决办法]
想通过测试捕获这么微小的效率差别,几乎都是不可能的。因为程序实际运行会受很多其他因素的影响,编译器优化,CPU cache, process switch 等等。对于这种细致区别,比较可靠的方法还是直接阅读生成的汇编代码,成功 inline 的函数在汇编中应该不出现,如果被 inline,则肯定比非 inline 快,具体快多少,只能数数每种情况对应的汇编语句了,以及每条指令的运算周期了。
[解决办法]