• 类间调用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的形式,就会退化成普通函数的形式调用。

  • 相关阅读:
    Java——读取和写入txt文件
    Java——去除字符串中的中文
    web.xml——Error:cvc-complex-type.2.4.a: Invalid content was found starting with element
    poi--读取不同类型的excel表格
    poi——读取excel数据
    java静态代码块
    Java-main方法中调用非static方法
    dom4j--解析xml文件
    python发送邮件
    JWT认证原理及使用
  • 原文地址:https://www.cnblogs.com/shawnpoo/p/3304604.html
Copyright © 2020-2023  润新知