小编Tar*_*del的帖子

C++/VS2008:宏与内联函数的性能

所有,

我正在编写一些性能敏感的代码,包括一个可以执行大量交叉产品的3d矢量类.作为一名长期的C++程序员,我了解宏的弊端和内联函数的各种好处.我一直认为内联函数应该与宏的速度大致相同.然而,在性能测试宏与内联函数中,我发现了一个有趣的发现,我希望是因为我在某处犯了一个愚蠢的错误:我的函数的宏版本似乎是内联版本的8倍以上!

首先,一个简单的矢量类的荒谬修剪版本:

class Vector3d
{
public:
    double m_tX, m_tY, m_tZ;

    Vector3d() : m_tX(0), m_tY(0), m_tZ(0) {}
    Vector3d(const double &tX, const double &tY, const double &tZ):
        m_tX(tX), m_tY(tY), m_tZ(tZ) {}

    static inline void CrossAndAssign ( const Vector3d& cV1, const Vector3d& cV2, Vector3d& cV )
    {
        cV.m_tX = cV1.m_tY * cV2.m_tZ - cV1.m_tZ * cV2.m_tY;
        cV.m_tY = cV1.m_tZ * cV2.m_tX - cV1.m_tX * cV2.m_tZ;
        cV.m_tZ = cV1.m_tX * cV2.m_tY - cV1.m_tY * cV2.m_tX;
    }

#define FastVectorCrossAndAssign(cV1,cV2,cVOut) { \
    cVOut.m_tX = cV1.m_tY …

c++ macros inline function

2
推荐指数
1
解决办法
1485
查看次数

标签 统计

c++ ×1

function ×1

inline ×1

macros ×1