按我的理解,如果我有一个:分支预测和变量声明
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]
和这样避免冗余的声明(如果分支预测是错误的),但会让我创建一个更长的阵列比我可能会需要...
问性能-wise:将数组声明移动到我的函数头部,还是将它放在我的if-else的每个case中都是一个好主意?
编辑:我知道这段代码中的任何性能变化都很小,可能不会被识别,但问题是关于校长。
注意:'“1”不是'char' - 它是一个'string'。至于性能,您的优化和内存节省可以忽略不计。 –
在这个例子中,分支预测的影响是徒劳的。运行时完全由printf()函数调用支配。 – wildplasser
@BatCoder我的意思是“1”是一个字符串。我有否另外提到? – CIsForCookies