scala集合转java_Java,Scala,Guava和Trove集合-它们可以容纳多少数据?

scala集合转java

球池_-1 关于我们的数据结构的一个有趣的事情是,即使我们非常熟悉它们,但对于我们来说,仍然很难说出像HashMap这样基本的东西在1GB的内存中可以容纳多少个项目。 我们可能会在学校,高级开发人员那里学到这一点,或者由于数据结构选择不当而导致服务器崩溃时,我们可能会以艰难的方式来学习。 所以我决定这样做。 我从大约20个最流行的Java,Scala,Guava和Trove集合中进行了测试,并测试了它们每个在1GB内存的JVM(通过-Xmx)中可以容纳多少个随机整数。 对于每个数据结构,我们都附加int,直到收到OutOfMemoryError为止,该错误结束了测试。 为了确保一致性,我们在JDK 7上运行了每个测试5次。 对于这种基本测试,我发现其中一些结果令人惊讶。 *我想我们不在同一页上,因为这不是竞争。 不同的集合具有不同的语义。 我也没有包括时间,因为重点不是微基准测试性能,而是让我们了解我们日常使用的收藏实际上可以容纳多少。

结果

  • Scala的集合比Java具有更大的容量。 Scala集合似乎比Java集合更有效。 虽然某些集合(例如TreeSets)的表现大致相同,但其他集合(例如Scala的HashMaps)却能够容纳近15%的物品。 HashSet可以容纳的项目比Java同类项目多8%。 我很想听听社区人士为什么这么认为。 Scala的ArrayBuffer相对于ArrayList具有一点优势。
  • 唯一的例外是Scala的链表,它比Java的LinkedList所保存的数据少18%。 这里的一个约束是,为了追加到列表,它需要接收另一个链接列表而不是直接值。 即使这样,假设临时列表是GC的,它本身也不会影响列表在1GB JVM中的容纳容量。

多少数据_3-1

*我们正在计算持有的int数,这意味着每张地图插入2 int。

  • 如果您不使用Trove,那么您会错过。 从第一天开始,我们就一直在Takipi的后端使用Trove的收藏。 好吧,可惜不是从第一天开始,因为这可以节省我们很多时间来优化服务器代码。 TIntArrayList能够容纳250%的Scala和Java盒装同类产品,这些数字足以说明一切。
  • 对于地图观察到相似的比率。 令人惊讶的是,Trove的映射性能超过Java和Scala列表超过50%。 请记住,您还具有从int到Object的Trove集合映射,反之亦然,因此您不需要完全原始的映射即可享受容量的好处。
  • 即使这样,我们仍然看到Trove的TIntLinkedList可以容纳比装箱它们的原语的Java ArrayList或Scala ArrayBuffer更少的数据。 这确实使您可以查看在您的代码中大量使用的链表并重新考虑-我绝对需要它吗?
  • 由于使用Trove集合与标准库的集合实际上没有开销,因此我不会将使用它们归类为“按需优化”方案。 这是因为内存消耗错误通常会在规模上显现,这是最难发现的错误,因此您必须开始进行生产调试 (当然Trove不会使您摆脱固有的效率低下的算法)。 有时可能是分析核心转储和观看巨人比赛之间的区别。
  • 番石榴–大地图,小套。 番石榴的多套产品比Java和Scala的同类产品价格更高。 与Scala的设置相比,它们能够保存的数据量减少了19%。 不利的一面当然是,他们可以执行使用标准集合语义不可能完成的事情。 只要多集将在您的内存结构中扮演重要角色,请确保您需要这些。
  • fredForBlog

  • 对于多贴图,我们看到的情况恰恰相反。 Guava的MultiHashMap比Java的hashmap拥有的值多20%,比Scala的多10%。 看到虽然Guava的多集在容量方面不及Java和Scala等价物,但MultiMap实际上却胜过Java和Scala。

那里有很多其他的收集类型(队列,堆栈等),但是我想从基础开始,并根据受欢迎的需求添加更多的收集类型。 因此,如果您想在列表中看到另一个收藏夹,或者想进一步了解某些功能上的差异,请在下面的评论部分中知道该怎么做。

  • 该代码可在此处获得 。

参考: Java,Scala,Guava和Trove集合-它们可以容纳多少数据? 来自我们的JCG合作伙伴 Tal Weiss的Takipi博客。

翻译自: https://www.javacodegeeks.com/2014/01/java-scala-guava-and-trove-collections-how-much-data-can-they-hold.html

scala集合转java

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/344087.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[渝粤教育] 中国地质大学 结晶学与矿物学 复习题 (2)

《结晶学与矿物学》模拟题 一单选题 1.Al2SiO5的三种同质多象变体中()形成于中高压变质带的低温部分. A.红柱石 B.蓝晶石 C.矽线石 D. 2.斑铜矿表面出现的蓝紫斑驳的颜色为(). A.自色 B.假色 C.他色 D.表面色 3.常见的石英是(). A.α-石英 B.β-石英 …

单模单纤的光纤收发器A、B端的位置可以互换吗?

单纤光纤收发器:接收发送的数据在一根光纤上传输顾名思义,单纤设备可以节省一半的光纤,即在一根光纤上实现数据的接收和发送,在光纤资源紧张的地方十分适用。那么,单模单纤的光纤收发器A、B端的位置可以互换吗&#xf…

WTF连接池

让我们谈谈连接池。 我声称: 大多数流行的连接池的默认设置都很差! 对您来说,这意味着: 去查看您的连接池设置。 如果您依赖默认设置,则可能会遇到问题。 您可能有内存泄漏和应用程序无响应(即使负载根…

安卓跑linux程序_Android下运行Linux可执行程序

2019-07-22关键字:/system/bin/sh: xxx: No such file or directory虽然说 Android 也是基于 Linux 的,但总归来说它们的编译链还是很有可能不一样的,这就导致编译出来的程序有可能不能通用,即使它们都是基于 Linux 的。而有些不能…

[渝粤教育] 中国地质大学 计算机文化基础 复习题

《计算机文化基础》模拟题 一、单项选择题 1.自然界中常见的光能够由()三种颜色混合而成. A.红黄绿 B.红绿蓝 C.澄蓝紫 D.白红绿 2.显示器彩电等成像显示设备的工作是基于()三色原理. A.RYG(红黄绿) B.WRG(白红绿) C.RGB(红绿蓝) D.CMY(青品红黄) 3.PentiumIICPU是()位处理器…

最常见的SQL报错注入函数(floor、updatexml、extractvalue)及payload总结

SQL报错注入是一种常见的SQL注入攻击方式,攻击者通过注入恶意代码,触发数据库的错误响应,并从错误信息中获取有用的信息。 下面介绍最常见的三个报错注入函数用法及payload总结: 1、floor() 使用floor报错注入,需要…

光电转换器与光纤收发器有哪些区别?

说到光电转换器,我们都知道光电转换器是一种类似于基带MODEM(数字调制解调器)的设备,和基带MODEM不同的是接入的是光纤专线,是光信号,分为全双工流控,半双工背压控制。那么,光电转换…

[渝粤教育] 中国地质大学 马克思主义基本原理 复习题

《马克思主义基本原理》 一.单选题 1.思维与存在的关系问题是() A.唯心主义哲学的基本问题 B.唯物主义哲学的基本问题 C.全部哲学的基本问题 D.一部分哲学的基本问题 2.金融资本是() A.银行垄断资本和工业垄断资本相互渗透融合生长而形成的新型的资本形态. B.银行垄断资本. C.…

如何查看spark消耗的内存_Spark优化(三)----数据本地化及内存调优

1. 数据本地化的级别:1.PROCESS_LOCAL2.NODE_LOCAL3.NO_PREF4.RACK_LOCAL5.ANY1) PROCESS_LOCALtask要计算的数据在本进程(Executor)的内存中。2) NODE_LOCAL① task所计算的数据在本节点所在的磁盘上。② task所计算的数据在本节点其他Execu…

[渝粤教育] 西南科技大学 数据库应用 在线考试复习资料(1)

数据库应用——在线考试复习资料 一、单选题 1.“表达式生成器”是用来书写什么的? A.代码 B.程序 C.表达式 D.数据库 2.在使用计算控件时,每个表示式前必须加上哪种运算符号? A. B. C.? D.* 3.以下属于非绑定控件的是哪一个? A.文本框 B.单选按钮 C.组合框 D.直线控件 …

光收发器安装介绍,光纤收发器连接示意图解

对于光纤布线来讲光纤收发器都是非常熟悉的产品了,在光纤网络中,我们常常会使用到光纤收发器,那么,在网络布线过程中光纤收发器该怎么连接呢?接下来飞畅科技的小编就来为大家介绍下光纤收发器安装以及连接图解&#xf…

[渝粤教育] 西南科技大学 电子产品制造工艺 在线考试复习资料

电子产品制造工艺——在线考试复习资料 一、单选题 1.对放大电路进行调试,静态主要测试( )参数。 A.放大倍数 B.静态工作点 C.输入电阻 D.输出电阻 2.用万用表测量1.9k的电阻,挡位应该选择( )。 A.10k B.5k C.2k D.1k 3.对手工焊接的工艺要求描述错误的是( )。 A.焊…

变压器图案

Transformer模式是Java(以及可能仅具有使用场所差异和不变参数类型的其他OO语言)的设计模式,可帮助子类型层次结构内的对象将自己流畅地转换为任何类型的对象。 语境 我一直在关注与Jim Laskey发行的JDK-8203703相关的OpenJDK线程&#xff…

mysql 分库分表_大众点评订单系统分库分表实践

原大众点评的订单单表早就已经突破两百G,由于查询维度较多,即使加了两个从库,优化索引,仍然存在很多查询不理想的情况。去年大量抢购活动的开展,使数据库达到瓶颈,应用只能通过限速、异步队列等对其进行保护…

[渝粤教育] 西南科技大学 经济学概论 在线考试复习资料

经济学概论——在线考试复习资料 一、单选题 1.可持续发展战略的核心内容是正确处理? A.农、轻、重之间的比例关系 B.第一、二、三产业之间的比例关系 C.经济发展与人口、资源、环境之间的关系 D.积累与消费之间的比例关系 2.调整和优化产业结构就是要? A.在国民经济各部门之…

多模光纤收发器购买时需要注意什么问题?

光纤收发器是光通讯产品的一类,它一般应用在以太网电缆无法覆盖、必须使用光纤来延长传输距离的实际网络环境中,同时在帮助把光纤最后一公里线路连接到城域网和更外层的网络上也发挥了巨大的作用。现如今,随着光通信产业的高速发展&#xff0…

[渝粤教育] 西南科技大学 计算机网络应用基础 在线考试复习资料2021版(1)

计算机网络应用基础——在线考试复习资料2021版 一、单选题 1. 在数字通信中广泛采用CRC循环冗余码的原因是CRC可以( )。 A. 检测出一位差错 B. 检测并纠正一位差错 C. 检测出多位突发性差错 D. 检测并纠正多位突发性差错 答案:看左边查询 2.为了保证连接的可靠性,TCP通常…

[渝粤教育] 西南科技大学 高级语言程序设计(Java) 在线考试复习资料

高级语言程序设计(Java)——在线考试复习资料 一、单选题 1.下列哪一个包给出了Runnable接口的定义?( ) A.iava.util B.java.io C.java.lang D.java.sql 2.下列( )属于Java线程同步方法。 A.joiny( ) B.run( ) C.wait( ) D.stroy( ) 3.下列方法中可以…

cd mysql 权限不够_.bash_profile权限不够_cdmysql权限不够

mac环境下创建bash_profile文件并写入内容_IO690x477 - 118KB - JPEGmac下创建bash_profile的问题? - Mac - 知乎585x366 - 22KB - PNG如何设置bash profile格式599x366 - 38KB - JPEG如何设置bash profile格式599x366 - 38KB - JPEG.bash_profile .bashrc profile文件的作用的…

POE交换机产品如何设计防雷保护?

在POE供电系统实际应用中,有很多受电设备AP或移动基站的基站AP与天线,经常要安装于建筑物的高端点,因此这些受电设备也成为遭受雷击的高发点。所以,对于这类的数据网络中心,不仅要考虑建设良好的直击雷防护网与良好的接…