Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
990 views
in Technique[技术] by (71.8m points)

switch 的性能比 if else 性能高很多吗?

switch 的性能比 if else 性能高很多吗?
我看到有很多地方switch直接取代了 if else


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

首先,楼上说case只判断一次个人觉得不严谨,当你有多个case的时候,需要去判断每一个case啊!除非你传入的参数进了第一个case就是只判断一次,且你还需要在case中写上break,否则依然是每个都要去执行。

其次,if elseif 判断逻辑上跟swich case是一样的,在这一点上不存在谁更好。所以它们的性能是一样的,不信可以去google上看下。

最后,swicth 什么时候会有优势呢?
就是当使用函数结果作为判断依据的时候
看下面代码

switch(some_func()) {
    case 1: ... break;
    case 2: ... break;
}

if(some_func() == 1) {}
elseif(some_func() == 2) {}

补充说明下:上面代码 if else不是最佳实践,就跟我们在for循环中,循环条件用count一样。我们可以使用中间变量在前面做一个赋值操作。这样就不会每次去调函数,提升效率。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...