问题描述
级联if-else语句之间是否存在性能差异
if (i > c20) {
// ...
} else if (i > c19) {
// ...
} else if (i > c18) {
// ...
} else if (i > c17) {
// ...
} else if (i > c16) {
// ...
} else if (i > c15) {
// ...
} else if (i > c14) {
// ...
} else if (i > c13) {
// ...
} else if (i > c12) {
// ...
} else if (i > c11) {
// ...
} else if (i > c10) {
// ...
} else if (i > c9) {
// ...
} else if (i > c8) {
// ...
} else if (i > c7) {
// ...
} else if (i > c6) {
// ...
} else if (i > c5) {
// ...
} else if (i > c4) {
// ...
} else if (i > c3) {
// ...
} else if (i > c2) {
// ...
} else if (i > c1) {
// ...
} else if (i > c0) {
// ...
} else {
// ...
}
并嵌套if语句,例如:
if (i > c10) {
if (i > c15) {
if (i > c18) {
if (i > c19) {
if (i > c20) {
// ...
} else {
// ...
}
} else {
//...
}
} else {
if (i > c17) {
// ...
} else {
// ...
}
}
} else {
if (i > c13) {
if (i > c14) {
// ...
} else {
// ...
}
} else {
if (i > c12) {
// ...
} else {
// ...
}
}
}
} else {
if (i > c5) {
if (i > c8) {
if (i > c9) {
//...
} else {
//...
}
} else {
if (i > c7) {
// ...
} else {
// ...
}
}
} else {
if (i > c3) {
if (i > c4) {
// ...
} else {
// ...
}
} else {
if (i > c2) {
// ...
} else {
if (i > c0) {
if (i > c1) {
// ...
}
} else {
// ...
}
}
}
}
}
如果存在差异,原因是一个比另一个更快?一种形式可以导致:更好的JIT编译,更好的缓存策略,更好的分支预测,更好的编译器优化等?我对Java
的性能特别感兴趣,但对了解在其他语言(例如C / C ++,C#等)中它可能是相似还是不同的人感兴趣。
i
的不同分布,检查范围和/或不同数量的if
语句将如何影响结果?
此处的值c0
至c20
严格按顺序增加,因此产生了愤怒。例如:
c0 = 0;
c1 = 10;
c2 = 20;
c3 = 30;
c4 = 40;
c5 = 50;
c6 = 60;
c7 = 70;
c8 = 80;
c9 = 90;
c10 = 100;
c11 = 110;
c12 = 120;
c13 = 130;
c14 = 140;
c15 = 150;
c16 = 160;
c17 = 170;
c18 = 180;
c19 = 190;
c20 = 200;
或
c0 = 0;
c1 = 1;
c2 = 2;
c3 = 3;
c4 = 4;
c5 = 5;
c6 = 6;
c7 = 7;
c8 = 8;
c9 = 9;
c10 = 10;
c11 = 11;
c12 = 12;
c13 = 13;
c14 = 14;
c15 = 15;
c16 = 16;
c17 = 17;
c18 = 18;
c19 = 19;
c20 = 20;
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)