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

  • 相关阅读:
    [转]九种常用排序的性能分析总结
    BOWER安装BOOTSTRAP
    nodejs+react构建仿知乎的小Demo
    2017-10-31
    React Mixin
    React:组件的生命周期
    入门书目
    内存溢出和内存泄漏的区别
    javascript中不易分清的slice,splice和split三个函数
    react安装
  • 原文地址:https://www.cnblogs.com/shawnpoo/p/3304604.html
Copyright © 2011-2022 走看看