Bry*_*eld 6 java performance android if-statement switch-statement
开发Android时,switch语句比if-else链更有效吗?switch语句需要更多行代码,但查看轶事证据似乎是Android应用程序中更常用的.
下面的示例说明了具有case语句和if-else链的相同编程结构.switch语句需要10行,而if-else链需要7行.
案例陈述
public void onClickWithSwitch(View v) {
switch(v.getId()) {
case R.id.buttonA:
buttonA();
break;
case R.id.buttonB:
buttonB();
break;
case R.id.buttonC:
buttonC();
}
}
Run Code Online (Sandbox Code Playgroud)
如果 - 其他链
public void onClickWithIf(View v) {
int id = v.getId();
if(id == R.id.buttonA)
buttonA();
else if (id == R.id.buttonB)
buttonB();
else if (id == R.id.buttonC)
buttonC();
}
Run Code Online (Sandbox Code Playgroud)
为什么切换比if-else链更常见?与if-else链相比,switch语句提供更好的性能吗?
语言具有switch语句的原因是允许编译器生成跳转表,如果它很大,则跳转表很快,因为在运行时它可以在O(1)而不是O(N)时间内获得所需的代码.
如果有很多情况并且在每种情况下执行的代码不需要花费很多时间,那么它在速度方面是有用的,并且程序在这段代码中花费了很多时间.
除此之外,它纯粹是一种品味问题.
代码行数和速度之间没有关系.重要的是生成的汇编语言代码,我鼓励您熟悉它.
除非你的ifs/case序列确实很大,否则我认为不重要.通过switch语句,可以更清楚地了解发生了什么.唯一的缺点是所有的break陈述和错过一个的可能性,但静态分析器应该抓住它.
最好的是一个由id或一些聪明的子类使用键入的地图