在为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();
}
}
If-else链
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();
}
为什么切换比if-else链更普遍?与if-else链相比,switch语句是否提供更好的性能?
最佳答案
语言具有switch
语句的原因是允许编译器生成跳转表(如果跳转表很大),这会很快,因为在运行时它可以在O(1)而非O(N)的时间内到达所需的代码。
只有在有很多情况下,并且在每种情况下要执行的代码都不需要花费很多时间,并且程序在此代码中花费的时间百分比很大,这才对速度有所帮助。
除此之外,这纯粹是一个品味问题。
代码行数与速度之间没有关系。重要的是生成的汇编语言代码的种类,我鼓励您熟悉它们。