if语句与switch之运行性能比较

<script type="text/JavaScript"> </script> <script src="http://a.alimama.cn/inf.js" type="text/javascript"></script>

在我刚开始写程序的时候,我很喜欢写 if(){...}else if(){...}else{...},所以导致我的程序看上去都是if语句,曾经也有人给我提过,但是我却不以为然,心想怎么都能实现,程序何必搞得那么花哨呢,开始鄙视人家,但是。。当我尝试用switch的时候,我才发现,我犯一个很大的错误,程序不单是讲究准确的,而且还是要讲效率的!

下面我就来针对这两种不同的流程控制语句进行一个比较:

我们首先来说一下 if语句,if语句是大家可能接触的最早,也是最先掌握的流程控制语句,因为它比较符合我们的顺势思维逻辑:举一个很简单的例子:
if(A>B)
{A=B;}
else
{B=A; }

这是一个很简单的,也是很经典的if语句,如果将这个例子放在switch 语句中,也并不是不能实现,但是实现起来可能会比较麻烦一些,因为在switch语句中case中要求的是常量,一般是不能进行逻辑判断的, 所以这也是if语句优于switch语句的地方!但是如果您判断的都是几个常量的数据,我建议您最好采用switch语句,如下:
switch(A)
{
   case:xxxx
     ///程序代码
     break;
    case:xxxxxx
    ///程序代码
    break;
}

这样的语句,虽然if语句也是能实现的,但是性能就比switch差的有点远了,大家写程序的,都有过数据库架构的经验,我们在架构大数据量的数据时,一般是要考虑索引的,我们为什么要考虑索引呢,至于这一点我就不用跟大家多说了吧?关于数据库的索引我会单独写一篇文章跟大家一起探讨!在我看来,switch语句是直接定位的,在我看来跟索引有很多相似的地方,这就是微软的作品的相似之处吧!直接定位的 Switch语句应该比if语句的性能优越多少,大家应该可想而知了吧?尤其是对于“字符串”的比较可能效果会更明显!对于更深入的探讨,我希望大家能给我补充上来,也能让我们大家一起学习与探讨。。。

最后也希望我们广大的程序员们要善于探索、发现新的知识,不断总结,不断的进行自我提高与完善 !

支持原创~~~

在我发表本篇文章后,由很多人已经开始怀疑了,我已从网上找到了一篇很好的文章,并将它转载了下来,这篇文章我也具体的看了,写的确实不错,也证实了我上面的推论是正确的:

文章地址: http://www.cnblogs.com/yeah/archive/2009/02/16/1392094.html <script type="text/JavaScript"> </script> <script src="http://a.alimama.cn/inf.js" type="text/javascript"></script>

转自:http://www.cnblogs.com/yeah/archive/2009/02/16/1392077.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
td>1. 在不同操作系统上测试系统功能。</td> <td>系统在各个操作系统下都能够正常运行。</td> <td>通过</td> </tr> <tr> <td>...</在Eclipse中,您可以在switch语句中使用if语句,但是需要注意一些细节。 在switch语td> <td>...</td> <td>...</td> <td>...</td> <td>...</td句中,每个case后面都是一个常量表达式,如果您在case中使用一个if语句,那> <td>...</td> </tr> </table> ## 5. 测试结果 ### 5.1 功能测试么这个if语句的条件表达式必须是一个常量表达式。否则编译器会报错结果 - 总共执行[测试用例数]个测试用例。 - 其中,通过[测试用例数]个。 另外,如果您在switch语句中使用if语句,需要注意判断条件的顺序。因为switch语句,失败[测试用例数]个。 - 失败的测试用例已经报告给开发团队,并在[是按照顺序逐一匹配case,一旦匹配成功就会执行对应的语句,因此如果在日期]修复。 ### 5.2 性能测试结果 - 在[负载条件]下,系统能够保持某个case中使用了if语句,需要确保if语句的判断条件是在该case匹配成功的前提稳定运行,响应时间在[时间范围]内。 ### 5.3 安全测试结果 - 没有下才能满足的。 下面是一段使用if语句switch语句的示例代码: ```c switch发现安全问题和漏洞。 ### 5.4 兼容性测试结果 - 系统在各个浏览器(num) { case 1: if (flag == 1) { printf("num is 1 and flag is 1和操作系统下都能够正常运行。 ## 6. 测试问题 - 在测试过程中,发现["); } else { printf("num is 1 and flag is not 1"); } break; case 2: 问题描述],已经报告给开发团队,并在[日期]修复。 - 其他问题:[问题描述 printf("num is 2"); break; default: printf("num is not 1 or 2"); } ``` ]。 ## 7. 测试总结 本次测试达到了预期的目标,系统的功能、性能、在上面的代码中,如果num的值为1,则会进入第一个case语句中的if语句,根稳定性等各方面都符合预期要求。同时,在测试过程中还发现了一些问题,据flag的值输出不同的信息。如果num的值为2,则会输出"num is 2"。如果num的值不是1或2,则会输出"num is not 1 or 2"。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值