做国外网站调查挣取零花钱做网站销售会问哪些问题
news/
2025/10/9 3:47:34/
文章来源:
做国外网站调查挣取零花钱,做网站销售会问哪些问题,中国企业查询官网,六安市论坛通常而言大家普遍的认知里switch case的效率高于if else。根据我的理解而言switch的查找类似于二叉树#xff0c;if则是线性查找。按照此逻辑推理对于对比条件数目大于3时switch更优#xff0c;并且对比条件数目越多时switch的优势越为明显。一、测试目的最近与开发同学对于前…通常而言大家普遍的认知里switch case的效率高于if else。根据我的理解而言switch的查找类似于二叉树if则是线性查找。按照此逻辑推理对于对比条件数目大于3时switch更优并且对比条件数目越多时switch的优势越为明显。 一、测试目的 最近与开发同学对于前面提到的性能问题有着各自不同的见解为证明我的观点现设计如下测试场景验证 PS一个方法里多达65个if else 二、测试策略利用Junit4执行本次测试分别设计50个、70个、100个条件式测试每轮测试分别执行1千万、2千万、3千万、4千万、5千万和6千万次为了力求让每轮测试不受外部因素干扰每轮测试执行10次收集信息分析。 为了让java在纯净的环境中运行。同时关闭了QQ、360、chrome等应用软件。 三、测试环境 Java 版本信息 Java version 1.7.0_25 Java(TM) SE Runtime Environment (build 1.7.0_25-b17) Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode) Junit4 JVM配置信息 --launcher.XXMaxPermSize 256m -Dosgi.requiredJavaVersion1.6 -Xms512m -Xmx1024m 系统信息 Windows7 旗舰版 64位操作系统 设备信息 处理器Intel(R) Core(TM) i3-2328M CPU 2.20GHz 2.20 GHz 安装内存(RAM)4.00GB (3.90 GB 可用) 因此次不涉及硬盘读写故不记录硬盘信息 四、测试脚本 因篇幅所限测试脚本略有缩减。 1 import java.util.Calendar; 2 import java.util.GregorianCalendar; 3 import java.util.Random; 4 import org.junit.After; 5 import org.junit.Before; 6 import org.junit.Test; 7 public class ServerServiceTest { 8 Calendar calender_begin, calender_end; 9 Long time_begin, time_end; //记录测试开始时间结束时间10 int flagNumber 1000000;// 迭代数11 Random r new Random();12 int i new Random().nextInt(100);//生成随机种子13 Before14 public void setUp() throws Exception {15 calender_begin new GregorianCalendar();16 time_begin calender_begin.getTimeInMillis();17 }18 After19 public void tearDown() throws Exception {20 calender_end new GregorianCalendar();21 time_end calender_end.getTimeInMillis();22 System.out.println(time_end - time_begin);23 }24 Test25 public void ifTest() {26 for (int temp 0; temp flagNumber; temp) {27 i r.nextInt(100);28 if (i 0) {29 } else if (i 1) {30 } else if (i 2) {31 } else if (i 3) {32 } else if (i 4) {33 } else if (i 5) {34 } else if (i 6) {35 } else if (i 7) {36 } else if (i 8) {37 } else if (i 9) {38 } else if (i 10) {39 } 40 }41 }42 Test43 public void switchTest() throws InterruptedException {44 for (int temp 0; temp flagNumber; temp) {45 i r.nextInt(100);46 switch (i) {47 case 0:48 break;49 case 1:50 break;51 case 2:52 break;53 case 3:54 break;55 case 4:56 break;57 case 5:58 break;59 default:60 break;61 }62 }63 }64 } View Code 五、测试结果 以下是收集的测试数据时间单位毫秒ms。其实这种数据看起来很难看出问题所在。 条件式测试数迭代数 1 (ms) 2345678910avgmaxmin1006千万if469466474455477478466460464483469483455switch4434434414384434374414424394384414434375千万if399420394403408402403393410430406430393switch3673743703663743823813763733973763973664千万if344325326359320325324319319328329359319switch3023053003153023022983182973003043182973千万if255249240248249247250256251246249256240switch2282322272312302292272312282312292322272千万if211177183182181172174170175178180211170switch1651491551521541551551661511581561661491千万if179174176176169177176191173183177191169switch152156167161158151161161159161159167151706千万if424416440437427419417411416429424440411switch3893953873883883923973913923933913973875千万if368366352354351352350362355361357368350switch3273273263243283273243233303253263303234千万if321300295293284283281335276281295335276switch2592622602622592612592682602672622682593千万if219229226217220226215223217226222229215switch1991972031991991991972002001971992031972千万if149158152155177159159158161150158177149switch1361361321341451331331321361331351451321千万if86838781908877839585869577switch65676767687167686868687165506千万if374361363363362364376366372373367376361switch3473433413413383623403433433433443623385千万if324312306306341312312299307307313341299switch2892872852832912882902882902812872912814千万if287247251252265247248256252256256287247switch2392372362292432302352322282282342432283千万if193196195197203198201188200204198204188switch1841781811751731721761841931741791931722千万if128129133145133139139130131143135145128switch1171181181171151201141131161181171201131千万if81688275766869799175769168switch60576060596559626160606557 六、测试结果分析 纯数据的测试结果很难进行分析经过整理以后如下图 if-100为if执行100条件式测试数switch-100为switch执行100条件式测试数 根据此图表结果大家已经可能很清晰的看出If与Swtich的性能对比结果了。但是如此细微的性能差异实现了业务就行了何必关注这种费心又麻烦的事呢 哈哈哈性能测试更多时候也是沟通问题更是行政问题。 七、总结 这次验证过程其实就是一次简单的性能测试过程也就是——需求挖掘-明确目的-设计策略-准备环境-脚本编写-收集数据-结果分析-测试报告。此处略去的报告内容因为不需要什么报告了。哈哈哈大家懂的 就大量条件式的业务场景而言除了利用switch以外其实还可以用到枚举(enum)作为条件式抽象每个判断式导向为函数式(function)。可能哪天我心情好会把利用enum优化的代码给放出来。 2015-8-23 15:17:18 跟新 策略模式接口注入写的是伪代码没有严格的语法规范大家凑合着看。 interface Service{public void execute();public T T eval();
}public class Strategy{private static ConcrunthashmapString,function content new ConcrunthashmapString,function();public void register(String name,ClasT xxx){if(!content.has(name)){content.put(xxx);//这里隐去了反射生成对象的过程}}public void execute(String name){content.get(name).execute();}public void eval(String name){content.get(name).eval();}
}class HelloServiceImpl implements Service{public void execute(){print hello world;}public String eval(){return hello world;}
}class HiServiceImpl implements Service{public void execute(){print hi world;}public String eval(){return hi world;}
}系列博客 品味性能之道一性能测试思维与误区品味性能之道二性能工程师可以具备的专业素养品味性能之道三方法论 品味性能之道四管理重于技术品味性能之道五SQL分析工具 品味性能之道六图形化SQL分析工具品味性能之道七索引基础品味性能之道八Loadrunner关联技巧与字符处理品味性能之道九利用Loadrunner编写socket性能测试脚本简述品味性能之道十Oracle Hint品味性能之道十一JAVA中switch和if性能比较深入理解Loadrunner中的Browser Emulation使用Loadrunner对IBM MQ进行性能测试怎么做性能测试--响应时间 转载于:https://www.cnblogs.com/snifferhu/p/3500864.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/932169.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!