传递结构和参数如何影响函数的性能

时间:2012-01-27 18:41:07

标签: c++ function data-structures

我从主要功能中调出了所有变量成员,并创建了一些结构,使其有条理,不那么复杂。我的问题不是像以前那样传递相应函数的特定参数,而是现在将具有大量数组大小的整个结构传递给每个函数。我想知道它是否会影响性能,如果有的话,这是一个更好的方法。

const int ard = 4096;
const int are = 8192;
const int ars = 64;

struct DataStructure_init {


    int main_seq[are][24];
    int main_seq2[are][24];
    int main_seq3[are][24];
    int main_lim[arc];
    int cou[ars][16];
    int gx[ars][32];
    int sx[ars][32];
    int col[ars];
    int sol[ars];
    int mix[ars];
    int max[ars];
    int hig[ars];

    int save[are];
    int list[are];
    int lis[are];
    int li;
    int mark;
    int fth[16];

    ...


};

struct DataStructure_trus {

...

};


DataStructure_trus va; 
DataStructure_init in;


int fpre   (DataStructure_trus va,DataStructure_init& in);
int ftrus  (DataStructure_trus& va);
int fseries(DataStructure_trus& va);
int ftcs   (DataStructure_trus va,DataStructure_init& in);
int finit  (DataStructure_trus va,DataStructure_init& in);
int fith   (DataStructure_trus va,DataStructure_init& in);
int flist  (DataStructure_trus va,DataStructure_init& in);
int fope   (DataStructure_trus va,DataStructure_init& in);
int fggs   (DataStructure_trus va,DataStructure_init& in);
int fpow   (DataStructure_trus va,DataStructure_init& in);
int fbin   (DataStructure_trus va,DataStructure_init& in);

2 个答案:

答案 0 :(得分:4)

按价值传递大型结构肯定会严重影响性能。尽管通过引用传递可能会使影响微不足道。

此外,按值传递大型结构可以让您想到这个站点名称。

答案 1 :(得分:1)

正如Michael所述,

通过引用传递将对性能影响不大。但是也有一些参数表明传递struct 而不是作为引用实际上是be faster。但是,目前尚不清楚何时这实际上是真的,因此它将归结为剖析。尝试两种方法,让分析器运行它,或者只是运行程序并测量所需的时间。