【发布时间】:2012-05-20 03:21:24
【问题描述】:
如果我有两个结构:
struct A
{
float x, y;
inline A operator*(A b)
{
A out;
out.x = x * b.x;
out.y = y * b.y;
return out;
}
}
还有一个等价的结构
struct B
{
float x, y;
}
inline B operator*(B a, B b)
{
B out;
out.x = a.x * b.x;
out.y = a.y * b.y;
return out;
}
您是否知道 B 的 operator* 有什么不同的编译方式,或者运行速度比 A 的 operator* 慢或快的任何原因(函数内部进行的实际操作应该是无关紧要的)?
我的意思是...将内联运算符声明为成员而不是成员,对实际函数的速度有任何一般影响吗?
我有许多不同的结构,目前都遵循内联成员运算符样式...但是我想将其修改为有效的 C 代码,而不是;所以在我这样做之前,我想知道性能/编译是否会有任何变化。
【问题讨论】:
-
你应该阅读stackoverflow.com/questions/4421706/operator-overloading,它显示的技术比这两种方法都快。
标签: c++ performance struct inline operator-keyword