Как передача структур и параметров влияет на производительность функции - PullRequest
0 голосов
/ 27 января 2012

Я забил все переменные члены из основной функции и создал несколько структур, чтобы сделать ее организованной и менее сложной. Моя проблема в том, чтобы вместо передачи конкретных параметров для соответствующей функции, как раньше, я сейчас передаю всю структуру с огромными размерами массива в каждую функцию. Я хочу знать, влияет ли это на производительность, и если да, то лучший способ сделать это.

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 ]

4 голосов
/ 27 января 2012

Передача больших структур по значению определенно сильно влияет на производительность. Хотя передача по ссылке, вероятно, делает влияние незначительным.

Кроме того, передача больших структур по значению может заставить вас задуматься об имени этого сайта.

1 голос
/ 27 января 2012

Передача по ссылке, как сказал Майкл , не окажет значительного влияния на производительность.Однако есть также аргументы, которые указывают, что передача структуры не в качестве ссылки будет на самом деле быстрее .Тем не менее, неясно, когда это действительно будет так, поэтому все сводится к профилированию.Попробуйте оба подхода и позвольте профилировщику запустить его, или просто запустите программу и измерьте время, которое требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...