zoukankan      html  css  js  c++  java
  • 类间调用inline函数的效率

    问题描述:

    class A

    {

    public:

    int x, y, k, NY;

    inline int f(int i, int j, int k)  {return ((i)*(NY + 1) * 9 + (j) * 9 + (k));};

    int f_notInline(int i, int j, int k);

    protected:

    private:

    };

    int A::f_notInline (int i, int j, int k)

    {

    return ((i)*(NY + 1) * 9 + (j) * 9 + (k));

    }

    class B

    {

    public:

    A Aprob;

    inline int pl(int i, int j, int k) {return Aprob.f3D(i, j, k);}

    inline int pl_f_notInline (int i, int j, int k) {return Aprob.f_notInline (i, j, k);}

    int D::pl_notIline_f(int i, int j, int k);

    protected:

    private:

    };

    int D:: pl_notIline_f (int i, int j, int k)

    {

    return Aprob.f3D(i, j, k);

    }

    A类中定义inline函数f和普通函数f_notinline

    用B类分别用以下三种形式调用:

    1. B类中的inline函数pl调用A类中的inline函数f:inline int pl(int i, int j, int k) {return Aprob.f3D(i, j, k);}

    用时:

    clip_image001

    2. B类中的inline函数 pl_f_notInline 调用A类中的普通函数f_notinline:inline int pl_f_notInline (int i, int j, int k) {return Aprob.f_notInline (i, j, k);}

    用时:

    clip_image002

    3. B类中的普通函数 pl_notIline_f 调用A类中的inline函数f:int D::pl_notIline_f(int i, int j, int k);

    用时:

    clip_image003

    结论:

    类间调用inline函数时,若要保持inline函数的性质,必须在两个类中都已inline函数的形式表示。

    一旦有一方不是inline的形式,就会退化成普通函数的形式调用。

  • 相关阅读:
    Nginx Backup配置
    CANas分析软件,DBC文件解析,CAN报文分析,仿CANoe曲线显示
    MySQL 报错:MySQL Illegal mix of collations for operation 'like'
    docker部署rebbitmq
    docker部署kafka
    nodejs 环境配置
    spring是怎么运行的?
    Java发展的时间表
    单例模式(转)
    disable的错误使用
  • 原文地址:https://www.cnblogs.com/shawnpoo/p/3304604.html
Copyright © 2011-2022 走看看