- 浏览: 380068 次
文章分类
最新评论
-
fishermen:
使用 <%@ page session="fa ...
Tomcat 的session管理 -
xinyiwust:
楼主你好!你总结的第一点:对于stateless的data s ...
Tomcat 的session管理 -
hujintao:
好像换成JDK目录后还是不行,比如HashMap这些类都不可以 ...
eclipse 调试 跟进 jdk -
顾小五:
是不是一般重写的方法,都有子类继承父类,就是 A extend ...
JAVA方法重载和方法重写 -
jhq986:
好用一定好评
lomboz插件下载
一直认为switch的效率高于if,特别对于条件大于3的时候,以前也貌似看过资料说:switch的查找类似二叉树,if的则是线性。
最近做了一个简单的测试,对有多个条件式的switch和if做比较,发现两者的效率几乎相同,if的效率甚至高于switch;<测试环境sun jdk6.1.13>
40个条件式的测试,测试1000 0000次,if耗时219ms, switch耗时234ms,平均都在4-5k/s;
30个条件式的测试,测试1000 0000次,if耗时188 switch耗时172平均都在5-6kw/s,
20个条件式,测试1000 0000次,if耗时109mswitch耗时125ms,平均在8-9kw/s
总结:
1 经过jdk的改进,目前switch和if的性能上差别微乎其微
2 条件式的多少对于一般应用的整体性能来说,影响也非常小。
3 影响效率的最大因子是条件式的数量,而非if或switch
测试代码
private static void testSitchAndIf(){ int testCount = 10000000; int flag = 0; Random random = new Random(testCount); int[] flags = new int[testCount]; for(int i = 0; i < testCount; i++){ flags[i] = random.nextInt() + 1; } // 先统一取一遍值,保证测试都用缓存值 for(int i = 0; i < testCount; i++){ flag = flags[i]; } long time1 = System.currentTimeMillis(); for(int i = 0; i < testCount; i++){ //flag = random.nextInt() + 1; flag = flags[i]; if(flag == 1){} else if(flag == 2){} else if(flag == 3){} else if(flag == 4){} else if(flag == 5){} else if(flag == 6){} else if(flag == 7){} else if(flag == 8){} else if(flag == 9){} else if(flag == 10){} else if(flag == 11){} else if(flag == 12){} else if(flag == 13){} else if(flag == 14){} else if(flag == 15){} else if(flag == 16){} else if(flag == 17){} else if(flag == 18){} else if(flag == 19){} else if(flag == 20){} else if(flag == 21){} else if(flag == 22){} else if(flag == 23){} else if(flag == 24){} else if(flag == 25){} else if(flag == 26){} else if(flag == 27){} else if(flag == 28){} else if(flag == 29){} else if(flag == 30){} // else if(flag == 31){} // else if(flag == 32){} // else if(flag == 33){} // else if(flag == 34){} // else if(flag == 35){} // else if(flag == 36){} // else if(flag == 37){} // else if(flag == 38){} // else if(flag == 39){} // else if(flag == 40){} } long time2 = System.currentTimeMillis(); for(int i = 0; i < testCount; i++){ flag = flags[i]; switch(flag){ case 1: break; case 2: break; case 3: break; case 4: break; case 5: break; case 6: break; case 7: break; case 8: break; case 9: break; case 10: break; case 11: break; case 12: break; case 13: break; case 14: break; case 15: break; case 16: break; case 17: break; case 18: break; case 19: break; case 20: break; case 21: break; case 22: break; case 23: break; case 24: break; case 25: break; case 26: break; case 27: break; case 28: break; case 29: break; case 30: break; // case 31: break; // case 32: break; // case 33: break; // case 34: break; // case 35: break; // case 36: break; // case 37: break; // case 38: break; // case 39: break; // case 40: break; // case 41: break; } } long time3 = System.currentTimeMillis(); System.out.println("loop count:" + testCount); System.out.println("if consume time:" + (time2 - time1) + ",avg:" + testCount / (time2 - time1) * 1000); System.out.println("switch consume time:" + (time3 - time2) + ",avg:" + testCount / (time3 - time2) * 1000); }
评论
2 楼
fishermen
2010-08-27
循环几十次,可计量时间短,而且样本数量也少,不容易看出实际效果。
1 楼
jarry-li
2010-08-23
楼主为什么不是循环几十次,if..else 有10 000 000次呢
发表评论
-
扩展列表
2013-05-30 16:15 9581 resources的获取方法 String re ... -
xml 构造及解析时的非法字符问题
2010-07-07 14:45 3523系统交互会用到xml,如果直接构造xml的字串,很 ... -
eclipse 调试 跟进 jdk
2009-08-12 09:49 3863突然发现用eclipse调试时不能跟进jdk的类 ... -
JavaScript to Java Communication
2009-05-18 18:51 1352对于应用程序,可以监听端口,构造协议,以实现特殊功能。 ... -
有关jsp/servlet的重定向技术综述[转载]
2007-07-02 15:00 2059有关jsp/servlet的重定向技术综述(2007-5-21 ... -
经典错误汇总!
2007-03-20 19:29 1866收集自己平日的错误,写出解决办法与要注意的地方,方便以后自己与 ... -
dom4jz之基础:XSL,XSLT,XPATH,XHTML,XML命名空间(网上搜集整理)
2007-03-10 10:59 2696整理到一块,方便自己与大家查阅 XHTML 介绍 XHTML ... -
面试点滴
2006-12-05 09:53 1586招工完毕,总结下,其他兄弟们继续努力^_^ 方正 第一次给了方 ... -
WAP技术
2006-11-28 18:33 2160WAP技术 手机上网是一个非常美好的梦想。为实 ... -
wap---介绍
2006-11-28 10:27 2414WAP WAP是Wirele ... -
eclipse3.1.2+lomboz开发j2ee程序与web应用---注意篇(2)
2006-11-27 20:16 2502还有些要注意的细节,特别说明下: ... -
eclipse+lomboz开发j2ee程序与web应用---配置(1)
2006-11-27 19:49 5836感谢每一位看到这篇文章的朋友,文章内容来自网络,请大家常来多 ... -
java面试笔试题大汇总
2006-11-24 15:54 8036java面试笔试题大汇总 JAVA相关基础知识 1、面向对象的 ... -
mustang,dolpin ---jdk
2006-11-13 22:50 1536news: Mustang、Dolpin更名JDK6、JDK ... -
JNDI介绍
2006-11-12 22:26 2827基于JNDI的应用开发 JNDI(The Java Nam ... -
Hibernate缓存
2006-10-31 22:39 1604缓存是介于应用程序和 ... -
Spring问答学习
2006-10-31 22:15 17901、如何学习Spring? 你可以通过下列途径学习sp ... -
Java/JSP中文乱码问题解决心得
2006-10-31 21:16 15018Java/JSP中文乱码问题解 ... -
JNI浅析
2006-10-26 21:19 1696JNI:是java本地接口,是jdk的一部分,通过jni ... -
NoClassDefDoundErr与ClassNotFoundException区别
2006-07-11 10:24 1801NoClassDefDoundErr与ClassNotFo ...
相关推荐
### if与switch的区别 在程序设计中,`if`与`switch`是非常常见的两种选择结构。...综上所述,`if` 和 `switch` 在使用时各有优势和限制。开发者应根据实际需求和上下文来选择最适合的条件判断结构。
在Java逻辑基础题中,if和switch语句是控制流程的重要组成部分,用于实现条件判断和多分支选择。 1. 题目1:考察了字符串常量的比较。在Java中,用"=="比较字符串时,实际上是比较两个对象的引用是否相同,而不是...
阿里巴巴Java性能调优华山版是...If / switch 性能评测 switch 性能优化 JVM 性能优化 MySQL性能优化的 50+ 小技巧 Redis 性能优化的 13 个小技巧 . . . 每篇文章图文并茂,附有源码 + 性能评测结果 + 优化方案。
JavaScript提供了多种方式来处理条件逻辑,其中最常用的两种是`if`语句和`switch-case`语句。本文将深入探讨这两种结构的特点、应用场景以及它们之间的性能差异。 #### if语句详解 `if`语句是JavaScript中最基本的...
总的来说,`if` 和 `switch` 在处理条件逻辑时各有优势,`===` 提供了更严格的比较,有助于减少潜在的错误。在编写JavaScript时,了解这些概念并选择合适的方式可以提高代码的清晰度和可靠性。记住,代码的可读性...
- 考虑到性能和用户体验,避免在`onCheckedChangeListener`回调中执行耗时操作,因为这可能导致UI线程阻塞,造成应用卡顿。如果需要进行复杂操作,建议使用异步任务或`Handler`。 7. **无障碍访问** - 不要忘记为...
性能优化手册是一套java性能...If / switch 性能评测 switch 性能优化 JVM 性能优化 MySQL性能优化的 50+ 小技巧 Redis 性能优化的 13 个小技巧 . . . 每篇文章图文并茂,附有源码 + 性能评测结果 + 优化方案。
在实际应用中,确保在各种设备和Android版本上测试自定义Switch的行为,确保其兼容性和稳定性。同时,关注性能,避免过度自定义导致的资源浪费。 总之,通过选择合适的开源项目,结合自身的定制需求,我们可以轻松...
在编程语言中,选择结构是控制程序流程的关键部分,它允许根据特定条件执行不同的代码块。本主题聚焦于使用`switch`语句来构建选择结构,这是许多...通过熟练掌握`switch`,开发者可以编写出更易维护、性能更好的代码。
在Android开发中,...注意,为了优化性能,通常会使用ViewHolder模式来避免频繁地查找视图,同时在`getView()`中适当地复用convertView。此外,如果数据源较大,考虑使用异步加载或分页加载技术来提高用户体验。
分析还可能涉及如何优化`enum`和`switch`的使用,以提高代码的可维护性和性能。 此外,"赚钱项目"这个文件名可能暗示了案例分析中包含了一个实际的商业应用示例,可能是关于如何利用`enum`和`switch`设计一个盈利...
内容涵盖了switch语句的定义、基本语法、使用场景、优点、注意事项、与if语句的区别、实战应用、多重分支、范围检查、字符串处理、默认情况、性能考虑、灵活性、多态性、安全性、调试、性能优化和最佳实践等高级知识...
随着软件工程的发展和技术的进步,优化`if`语句成为了提高程序性能、减少资源消耗以及提升代码可读性和可维护性的重要手段。本文将深入探讨`if`语句的优化技巧及其应用场景。 #### 一、使用三元运算符简化代码 ...
通过研究`android4.0 switch`源码,开发者不仅可以理解`Switch`的基本工作原理,还能学习到如何进行UI组件的自定义和性能优化,这对于提升Android应用的用户体验至关重要。在`SwitchDemo`项目中,开发者可以找到实际...
值得注意的是,if-else和switch语句的选择并不仅仅局限于性能的考虑,还包括代码的可读性和可维护性。在某些情况下,使用switch语句可以让代码更加清晰明了,尤其是在处理具有明确分类或等级制度的场景中。而在需要...
这种架构在企业网络、数据中心和大型园区网络中非常常见,因为它能够有效地管理网络资源,同时提供良好的性能和安全性。 VLANIF技术的应用不仅限于简单的VLAN间通信,还可以与其他网络技术结合,如NAT(网络地址...
Java中的switch语句是一种多路分支的选择流程控制结构,它提供了比if-else语句更为简洁的代码形式,尤其在处理多个等值判断...在实际开发中,需要根据具体情况选择使用switch还是if-else,以达到最佳的代码质量和性能。
1. **基础语法**:包括变量、数据类型、运算符、流程控制语句(如if-else、switch、for循环和while循环)以及函数定义和调用。 2. **作用域和闭包**:讲解了如何管理变量的作用域,以及闭包如何为JavaScript提供...