注意:谢谢你告诉我,无论我怎么写,这都会毫无保留,我问的原因是因为它与我的单身任务类似,我想让我的讲师开心,是否有更多“可读”的代码或更好的东西,可以让我的讲师更快乐,或者这段代码很好而不是“效率低下”。
我有一个关于我应该如何编写代码的问题,基本上我有一个switch语句,用于将char更改为特定的char,具体取决于它所处的内容。但是只有当亚麻布是一个奇数时才会改变(从0开始,所以每第二行都会选择一个新的字符)。目前我的代码是......
int linenumber;
char zone = UNKNOWN;
for (linenumber = 0; linenumber < 21; linenumber++) {
switch (linenumber) {
case (1):
zone = 'a';
break;
case (3):
zone = 'b';
break;
case (5):
zone = 'c';
break;
case (7):
zone == 'd';
break;
case (9):
zone = 'e';
break;
case (11):
zone = 'f';
break;
case (13):
zone = 'g';
break;
case (15):
zone = 'h';
break;
case (17):
zone = 'i';
break;
case (19):
zone = 'j';
break;
if (linenumber % 2 == 0) {
}
}
}
但是,由于交换仅在第二种情况下发生,因此编写if语句(如....)会更有效率。
if (linenumber % 2 == 1) {
switch.....
}
把switch语句放在里面......只是想知道在这种情况下额外的if语句是否会更高效或更低效。
提前致谢!
答案 0 :(得分:6)
你问的是错误的问题。您要做的是称为微优化。它节省了纳秒。通常它不会,因为你三年前学到的东西今天可能是错的。真正的程序员不关心纳秒,他们会获得至少可以节省微秒的巨大胜利。
说真的,编写最具可读性的代码。在这种特殊情况下,switch语句非常难以理解。
对于严重的优化问题,请查看Michael Kohne的答案。如果你不能使用分析器来打扰,那么速度就不是很重要了。
答案 1 :(得分:2)
没有答案,除了'两种方式并且看到'。这取决于编译器和目标环境。
答案 2 :(得分:2)
这些微优化不太可能影响代码的性能。
此外,如果您需要关心,那么您应该对代码进行性能分析。在这种情况下,找出switch case和if-else块之间的性能差异将是微不足道的。