Как я понимаю, если у меня есть:
if(case 1)
{
char x[] = "1";
printf("%s",x);
}
else if(case 2)
{
char x[] = "12";
printf("blah-blah-blah\n");
printf("%s",x);
}
тогда мой компилятор попытается предсказать ветку, в которую войдет код, и таким образом улучшить поток выполнения. Я могу создать свой char x[MAX_SIZE]
в заголовке этой функции и таким образом избежать избыточного объявления (если предсказатель ветвления неверен), но это заставит меня создать более длинный массив, чем мне, вероятно, понадобится...
С точки зрения производительности: стоит ли переместить объявление массива в заголовок моей функции или оставить его внутри каждого случая моего if-else?
EDIT: я знаю, что любое изменение производительности в этом коде будет очень небольшим и, вероятно, не будет распознано, но вопрос был о принципале.
"1"
— это неchar
, аstring
. Что касается производительности, ваша оптимизация и экономия памяти незначительны. - person abhishek_naik   schedule 26.06.2016