当前位置: 首页 > news >正文

南京网络建站模板jwplayer wordpress

南京网络建站模板,jwplayer wordpress,爱企查企业查询入口,东莞品托网站建设Java 程序员经常使用容器#xff0c;比如 ArrayList 和 HashSet。Java 8 中的 lambda 语法和 steaming API 可以让我们更方便的使用容器。大部分情况下#xff0c;我们仅仅处理几千个元素#xff0c;也不会去考虑性能问题。但是#xff0c;在一些极端场景下#xff0c;如果…Java 程序员经常使用容器比如 ArrayList 和 HashSet。Java 8 中的 lambda 语法和 steaming API 可以让我们更方便的使用容器。大部分情况下我们仅仅处理几千个元素也不会去考虑性能问题。但是在一些极端场景下如果我们需要遍历上百万个元素性能问题就凸显出来了。 本文将采用 JMH 计算每块代码的运行时间。 forEach vs. C Style vs. Stream API 遍历是一个基本的功能。所有编程语言都提供了简单的语法让程序员去遍历容器。Steam API 以一种非常直接的形式来遍历容器。 publicList streamSingleThread(BenchMarkState state){ List result newArrayList(state.testData.size()); state.testData.stream().forEach(item - { result.add(item); }); returnresult; } publicList streamMultiThread(BenchMarkState state){ List result newArrayList(state.testData.size()); state.testData.stream().parallel().forEach(item - { result.add(item); }); returnresult; } forEach 循环也很简单 publicListforEach(BenchMarkState state){ List result newArrayList(state.testData.size()); for(Integer item : state.testData){ result.add(item); } returnresult; } C 语言形式的 for 循环啰嗦一些不过依然很紧凑 publicListforCStyle(BenchMarkState state){ intsize state.testData.size(); List result newArrayList(size); for(intj 0; j size; j ){ result.add(state.testData.get(j)); } returnresult; } 以下是性能报告 Benchmark Mode  Cnt   Score   Error  Units TestLoopPerformance.forCStyle avgt20018.068±0.074ms/op TestLoopPerformance.forEach avgt20030.566±0.165ms/op TestLoopPerformance.streamMultiThread   avgt20079.433±0.747ms/op TestLoopPerformance.streamSingleThread  avgt20037.779±0.485ms/op 使用 C 语言形式的 for 循环JVM 每次仅仅增加一个数字然后直接从内存里读出数据。这使得它非常迅速。但是 forEach 就大不一样根据 StackOverFlow 的这篇回答 https://stackoverflow.com/questions/85190/how-does-the-java-for-each-loop-work/85206#85206 和 Oracle 的文章 https://docs.oracle.com/javase/1.5.0/docs/guide/language/foreach.html JVM 需要把 forEach 转换成一个 iterator然后每个元素都调用一次 hasNext() 方法。这就是 forEach 比 C 语言的形式慢一些的原因。 哪一个是遍历 Set 最高效的方法呢 我们先定义测试数据集 State(Scope.Benchmark) publicstaticclassBenchMarkState{ Setup(Level.Trial) publicvoiddoSetup(){ for(inti 0; i 500000; i){ testData.add(Integer.valueOf(i)); } } TearDown(Level.Trial) publicvoiddoTearDown(){ testData newHashSet(500000); } publicSet testData newHashSet(500000); } Java 中的 Set 也支持 Steam API 和 forEach 循环。参考之前的测试如果我们把 Set 转换成 ArrayList然后遍历 ArrayList或许性能会好一些 publicListforCStyle(BenchMarkState state){ intsize state.testData.size(); List result newArrayList(size); Integer[] temp (Integer[]) state.testData.toArray(newInteger[size]); for(intj 0; j size; j ){ result.add(temp[j]); } returnresult; } 如果把 iterator 和 C 语言形式结合起来呢 publicListforCStyleWithIteration(BenchMarkState state){ intsize state.testData.size(); List result newArrayList(size); Iterator iteration state.testData.iterator(); for(intj 0; j size; j ){ result.add(iteration.next()); } returnresult; } 或者简单的遍历怎么样 publicListforEach(BenchMarkState state){ List result newArrayList(state.testData.size()); for(Integer item : state.testData) { result.add(item); } returnresult; } 这个主意不错不过它的效率也不高因为初始化一个新的 ArrayList 同样需要消耗资源。 Benchmark     Mode  Cnt  Score   Error  Units TestLoopPerformance.forCStyle     avgt2006.013±0.108ms/op TestLoopPerformance.forCStyleWithIteration  avgt2004.281±0.049ms/op TestLoopPerformance.forEach avgt2004.498±0.026ms/op HashMap (使用 HashMap 的 HashSet) 不是为遍历所有元素设计的。遍历一个 HashMap 最快的方法是把 Iterator 和 C 语言形式结合起来这样 JVM 就不会去调用 hasNext()。 为了让学习变得轻松、高效今天给大家免费分享一套Java教学资源。帮助大家在成为Java架构师的道路上披荆斩棘。需要资料的欢迎加入学习交流群928505736
http://www.pierceye.com/news/370307/

相关文章:

  • 网站维护计划商标注册号查询入口官网
  • 个人怎样申请网站网站整站html
  • 网站规则购房网官网
  • 苏州市吴江区住房和城乡建设局网站西安市今天发生的重大新闻
  • 网站需求建设关系书赚钱软件学生
  • 长春做网站4435怎么做手机网站
  • 电子政务网站系统微信扫码登录wordpress
  • 设计网站一般要多少钱方维服务公司服务范围
  • 济南外贸网站制作做网站推广每天加班
  • 网站开发虚拟主机系统做网站的新闻
  • 黄骅港信息吧windows优化大师好用吗
  • 网站编辑怎么做哪些知名网站用wordpress
  • 兰州网站seo收费标准小程序和wordpress
  • 北京市网站设计h5制作平台免费推荐
  • 青岛网站设计企业网络营销个人感悟小结
  • 酒店网站源码宁夏网站制作哪家好
  • 租个网站服务器多少钱电子商务网站的建设流程
  • 正规营销型网站定制上海缘震网络科技有限公司
  • 网站建设的目的个人养老金查询
  • 沧州英文模板建站长沙 网站建设公司
  • 广州网站备案公司南昌网站建设网站推广
  • 龙岗外贸网站建设公司博览局网站建设
  • 怎么做淘课网站百度网站优化方案
  • 余姚做网站深圳华强北怎么了
  • 网站建设单元格边距WordPress进
  • 备案后的域名改网站名沪深300指数怎么买
  • 行业网站维护买电脑wordpress
  • 廊坊兼职网站建设网站图片怎么做的高级
  • pc网站转换手机网站wap用jsp源码做网站
  • 重庆慕尚网站建设在线美工