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

自己编程做网站翡翠原石网站首页怎么做

自己编程做网站,翡翠原石网站首页怎么做,未来十年电商前景如何,网站开发广告宣传与Peter Lawrey合作撰写 。 几天前#xff0c;我对使用新的Java8声明式的排序性能提出了严重的问题。 在这里查看博客文章。 在那篇文章中#xff0c;我仅指出了问题所在#xff0c;但在这篇文章中#xff0c;我将更深入地了解和解释问题的原因。 这将通过使用声明式样式重… 与Peter Lawrey合作撰写 。 几天前我对使用新的Java8声明式的排序性能提出了严重的问题。 在这里查看博客文章。 在那篇文章中我仅指出了问题所在但在这篇文章中我将更深入地了解和解释问题的原因。 这将通过使用声明式样式重现问题然后一点一点地修改代码来完成直到我们消除了性能问题并保留了使用旧样式比较所期望的性能。 回顾一下我们对此类的实例进行排序 private static class MyComparableInt{private int a,b,c,d;public MyComparableInt(int i) {a i%2;b i%10;c i%1000;d i;}public int getA() return a;public int getB() return b;public int getC() return c;public int getD() return d; } 使用声明性的Java 8样式如下大约需要6秒钟才能排序10m个实例 List mySortedList myComparableList.stream().sorted(Comparator.comparing(MyComparableInt::getA).thenComparing(MyComparableInt::getB).thenComparing(MyComparableInt::getC).thenComparing(MyComparableInt::getD)).collect(Collectors.toList()); 使用自定义排序器如下花费了约1.6秒的时间来排序10m个实例。 这是排序的代码调用 List mySortedList myComparableList.stream().sorted(MyComparableIntSorter.INSTANCE).collect(Collectors.toList()); 使用此自定义比较器 public enum MyComparableIntSorter implements ComparatorMyComparableInt{INSTANCE;Overridepublic int compare(MyComparableInt o1, MyComparableInt o2) {int comp Integer.compare(o1.getA(), o2.getA());if(comp0){comp Integer.compare(o1.getB(), o2.getB());if(comp0){comp Integer.compare(o1.getC(), o2.getC());if(comp0){comp Integer.compare(o1.getD(), o2.getD());}}}return comp;}} 让我们在类中创建一个comparing方法以便我们可以更紧密地分析代码。 comparing方法的原因是允许我们轻松交换实现但将调用代码保持不变。 在所有情况下这都是comparing方法的调用方式 List mySortedList myComparableList.stream().sorted(comparing(MyComparableInt::getA,MyComparableInt::getB,MyComparableInt::getC,MyComparableInt::getD)).collect(Collectors.toList()); 比较的第一个实现几乎是jdk中的一个副本。 public static T, U extends Comparable? super U ComparatorT comparing(Function? super T, ? extends U ke1,Function? super T, ? extends U ke2,Function? super T, ? extends U ke3,Function? super T, ? extends U ke4){return Comparator.comparing(ke1).thenComparing(ke2).thenComparing(ke3).thenComparing(ke4);} 毫不奇怪这花了大约6秒钟才能完成测试-但是至少我们重现了该问题并为进一步进行奠定了基础。 让我们看一下该测试的飞行记录 可以看出有两个大问题 lambda$comparing方法中的性能问题 反复调用Integer.valueOf 自动装箱 让我们尝试处理比较方法中的第一个方法。 乍一看这似乎很奇怪因为当您查看代码时该方法没有发生太多事情。 然而随着代码找到该函数的正确实现虚拟表查找将在这里广泛进行。 当从一行代码中调用多种方法时将使用虚拟表查找。 我们可以通过下面的comparing实现消除这种延迟源。 通过扩展Function接口的所有用途每一行只能调用一个实现因此可以内联该方法。 public static T, U extends Comparable? super U ComparatorT comparing(Function? super T, ? extends U ke1,Function? super T, ? extends U ke2,Function? super T, ? extends U ke3,Function? super T, ? extends U ke4){return (c1, c2) - {int comp compare(ke1.apply(c1), ke1.apply(c2));if (comp 0) {comp compare(ke2.apply(c1), ke2.apply(c2));if (comp 0) {comp compare(ke3.apply(c1), ke3.apply(c2));if (comp 0) {comp compare(ke4.apply(c1), ke4.apply(c2));}}}return comp;};} 通过展开方法JIT应该能够内联方法查找。 确实时间几乎减少了一半至3.5秒让我们来看一下此运行的飞行记录 当我第一次看到此消息时我感到非常惊讶因为到目前为止我们还没有进行任何更改来减少对Integer.valueOf的调用但是该百分比已经下降了 发生了什么实际上发生在这里的是由于变化我们提出允许内联该Integer.valueOf已内联并采取了时间Integer.valueOf被呼叫者指责 lambda$comparing 它内联了被调用者 Integer.valueOf 。 这是事件探查器中的一个常见问题因为他们可能会误解应归咎于哪种方法尤其是在内联发生时。 但是我们知道在之前的Flight Recording Integer.valueOf 突出显示了因此让我们通过comparing实现comparing删除看看是否可以进一步减少时间。 return (c1, c2) - {int comp compare(ke1.applyAsInt(c1), ke1.applyAsInt(c2));if (comp 0) {comp compare(ke2.applyAsInt(c1), ke2.applyAsInt(c2));if (comp 0) {comp compare(ke3.applyAsInt(c1), ke3.applyAsInt(c2));if (comp 0) {comp compare(ke4.applyAsInt(c1), ke4.applyAsInt(c2));}}}return comp; }; 使用此实现时间可以缩短到1.6s这是我们使用自定义比较器可以实现的。 让我们再次查看此运行的飞行记录 现在所有时间都在使用实际的排序方法而不是开销。 总之我们从这次调查中学到了一些有趣的事情 由于自动装箱和虚拟表查找的成本在某些情况下使用新的Java8声明式排序将比编写自定义比较器慢4倍。 FlightRecorder虽然比其他分析器要好有关此问题请参阅我的第一篇博客文章 但仍将时间归因于错误的方法尤其是在进行内联时。 翻译自: https://www.javacodegeeks.com/2015/01/java8-lambdas-sorting-performance-pitfall-explained.html
http://wiki.neutronadmin.com/news/113026/

相关文章:

  • 小型企业网站开发价格一般做企业网站需要什么资料
  • 制作网站需要wordpress中关村手机报价大全
  • 常用来做网站首业的是aspnet网站开发工具
  • 手机中国建设银行网站嘉兴网站快速排名优化
  • 公司网站建设如何摊销开发网站 数据库
  • 沈阳市网站制作一个企业网站需要多少钱
  • asp简单购物网站源码wordpress万网
  • 园林专业设计学习网站织梦古典网站模板
  • 如何制作一个单页网站公司做网站发生的费用分录
  • 网站备案类型物联网技术有哪些
  • 中兴路由器做网站网上给别人做网站
  • 网站制作流程论文公司门户最新版下载
  • 上海网站推广软件网站备案类型及条件
  • 手机行情网报价实时查询东莞企业网站排名优化
  • 兰州网站定制公司wordpress 有广告
  • 有哪些网站是拐角型乌兰察布市建设工程造价网站
  • 自己的网站群晖企业解决方案
  • 网站开发和软件开发工作传销网站开发系统维护
  • 网站业务怎么做的友情链接购买网站
  • 霞山网站开发公司开店加盟
  • 从来没做过网站如何做手表网站素材
  • 网站主页面设计多少钱品牌设计流程
  • 触屏音乐网站源码廊坊网站建设官网
  • 诸城网站建设php程序员
  • 网站后台代码如何做网站建设公司新闻
  • 海外购物网站建设wordpress沙盒框架
  • 做网站多少钱西宁君博领先开封建设企业网站公司
  • 菏泽建设职业中等专业学校官方网站高新区建网站外包
  • 昆明网站制作廊坊电商网站建设
  • 深圳宝安网站建设报价玉环市建设规划局网站