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

Gam*_*ing 0 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);
Run Code Online (Sandbox Code Playgroud)

Mic*_*ker 5

按值传递大型结构肯定会严重影响性能。尽管通过引用传递可能会使影响可以忽略不计。

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

  • @GambitKing你可以传递一个const ref。 (2认同)