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

汽车技术资料网站建设写作网站都有哪些ppp

汽车技术资料网站建设,写作网站都有哪些ppp,广州做网站信息,揭阳建网站仅具有一个元素的Java流有时会在应用程序中造成不必要的开销。 了解如何使用SingletonStream对象并为其中某些此类流获得十倍的性能#xff0c;并了解如何同时简化代码。 背景 Java 8中的Stream库是有史以来Java语言最强大的功能之一。 一旦您开始了解它的多功能性和所产生的… 仅具有一个元素的Java流有时会在应用程序中造成不必要的开销。 了解如何使用SingletonStream对象并为其中某些此类流获得十倍的性能并了解如何同时简化代码。 背景 Java 8中的Stream库是有史以来Java语言最强大的功能之一。 一旦您开始了解它的多功能性和所产生的代码可读性您的Java代码样式将永远改变。 与其使用for if和switch语句以及众多中间变量来充斥所有琐碎的细节您还可以使用Stream 它仅包含要做什么的描述而不是实际上是如何完成的。 几年前我们不得不为Java项目做出API决定我们应该为两种快速本地内存数据缓存方法选择哪种返回类型 唯一的搜索键返回一个值或不返回任何值 一个非唯一的搜索键它返回任意数量的值零到无穷大。 这是最初的想法 OptionalT searchUnique(K key); // For unique keys StreamT search(K key);         // For non-unique keys 但是我们希望这两个方法看起来完全相同并且都返回一个 StreamT 。 然后API看起来会更加整洁因为唯一缓存将看上去与非唯一缓存完全相同。 但是唯一搜索必须非常高效并且每秒必须创建数百万个结果对象而又不会产生太多开销。 解决方案 通过实现仅包含单个元素的SingletonStream 因此与具有任意数量元素的普通Stream相比可以进行高度优化我们能够让这两种方法在保持性能的同时返回Stream 。 如果未找到键则方法searchUnique(K key)将返回一个空流 Stream.empty() 如果该键存在则它将返回SingletonStream以及与该键关联的值。 我们会得到 StreamT searchUnique(K key); // For unique keys StreamT search(K key); // For non-unique keys 大 我们可以吃饼干仍然可以吃 实施 SingletonStream是Speedment Stream ORM的一部分可以在GitHub上查看。 随意使用的Speedment自己的项目中使用Speedment任何它的组件的初始化 。 SingletonStream是使用JVM的Escape Analysis进行堆栈分配的不错选择在我以前的文章中 这里和此处有关Escape Analysis的更多信息 。 该实现有两种形式。 如果将STRICT值设置为true 我们将获得一个完全惰性的Stream 但是缺点是一旦调用诸如.filter(), map()等中间操作 我们将失去Singleton属性 。另一方面将STRICT值设置为false SingletonStream会急切地执行许多中间操作 并且它将能够返回新的SingletonStream从而保留Singleton属性 。 在许多情况下这将提供更好的性能。 这里为参考流设计的解决方案也可以很容易地修改为单例流的原始形式。 因此编写SingletonIntStream SingletonLongStream和SingletonDoubleStream 。 这是SingletonLongStream 。 应该注意的是该类可以进一步发展以便它可以支持惰性评估同时始终保持高性能。 这是未来的工作。 性能 有多种方法可以测试SingletonStream的性能并将其与具有一个元素的标准Stream实现进行比较。 这是使用JMH的一种方法。 第一个测试计数仅对流中的元素数进行计数第二个测试forEach对流中的一个元素执行某些操作。 Benchmark public long singletonStreamCount() {return SingletonStream.of(A).count(); }Benchmark public long streamCount() {return Stream.of(A).count(); }Benchmark public void singletonStreamForEach() {SingletonStream.of(A).limit(1).forEach(blackHole()); }Benchmark public void streamForEach() {Stream.of(A).limit(1).forEach(blackHole()); }private static T ConsumerT blackHole() {return t - {}; } 在MacBook Pro笔记本电脑上运行时将产生以下结果 ... Benchmark Mode Cnt Score Error Units SingletonBench.singletonStreamCount thrpt 333419753.335 ops/s SingletonBench.singletonStreamForEach thrpt 2312262034.214 ops/s SingletonBench.streamCount thrpt 27453782.595 ops/s SingletonBench.streamForEach thrpt 26156364.956 ops/s ... “计数”操作的加速因子超过10。 对于“ forEach”操作看来JVM能够完全优化SingletonStream的完整代码路径。 测试一下 使用Speedment 初始化程序下载Speedment。 完整的测试课程在这里可用。 结论 SingletonStream或多或少地作为扩展的Optional起作用并在保持Stream库优点的同时提供高性能。 您可以通过将STRICT值设置为首选的严格性/性能选择来选择它的两个版本。 SingletonStream可以进一步改进。 翻译自: https://www.javacodegeeks.com/2018/10/java-gain-performance-singletonstream.html
http://www.pierceye.com/news/718701/

相关文章:

  • 找做网站页的在哪找沭阳建设局网站
  • 私人做网站有什么用不断加强门户网站建设
  • WordPress简单百度站长插件使用cms建设网站安全吗
  • 响水做网站价格余江网站建设
  • 好的免费个人网站网站建设所需要的材料
  • 南宁本地网站有哪些建筑工程网络组网
  • 如何构建一个网站wordpress更换ssl
  • 做电影网站需要注意什么安徽易企建站
  • 莆田网站格在哪里做网站数据维护
  • 建设的网站别人登录密码做个企业网站多少钱
  • 邢台网站推广怎么做好网站推理
  • 网站项目需求盐城网站开发基本流程
  • 桐乡市城乡规划建设局网站网站企业备案和个人备案的区别
  • 公职人员可以做公益网站吗dw做的网站怎么放到服务器上
  • wordpress 导航网站模板wordpress建立企业网站
  • 厦门网站建设哪里好青岛做网站电话
  • 中国做网站正邦自己建站模板
  • 网站设计公司如何盈利安阳做网站多少钱
  • 简述网站开发的主要阶段邢台短视频推广
  • 黑彩网站充值就给你做单子青岛高品质网站建设
  • 网站建设是固定资产还是列费用矿泉水瓶50种手工制作
  • 兰州 网站建设凡客优品家居
  • 国内免费网站服务器推荐夸克网页版
  • 旅游型网站开发网站开发语言分析
  • 上海 网站建设平台 补贴始兴县建设局网站
  • 湘潭学校网站建设 z磐石网络桥 网站建设
  • 自建外贸网站多少钱长春新冠最新情况
  • 网站seo是啥镜像wordpress博客
  • 广州手机网站建设电子商务平台经营者对于竞价排名的商品或服务
  • 宁波网站建设联系电话查询网站页面设计服务