当前位置: 首页 > 面试题库 >

从性能角度来看,Guava库有多好?

凤修为
2023-03-14
问题内容

我已经遍历了Google Guava库,并在其中找到了许多很好的可用数据结构

如果有人使用过它,那么您能否提供有关在与庞大数据集一起使用时其性能的反馈?基本上,我正在为其操作寻找BigO表示法。

提前致谢


问题答案:

番石榴的贡献者在这里。

嗯,有什么要说的?所有基于散列(和基于枚举)的集合都具有恒定时间的单项操作,完全符合您的期望。(HashMultisetLinkedHashMultisetConcurrentHashMultisetHashBiMapHashBasedTableImmutableSetImmutableMapEnumMultisetEnumBiMap,等等都属于这一类。)所有基于树/分类收藏有他们的单次入境的操作,包括对数时间TreeMultisetImmutableSortedMapImmutableSortedSet

好吧,在多地图中,文档基本上告诉您Map和值收集的实现,您可以从那里弄清楚。 HashMultimap基本上是a
HashMapHashSets,LinkedHashMultimap是a
LinkedHashMapLinkedHashSets,ArrayListMultimap是a
HashMapArrayLists,LinkedListMultimap是a
LinkedHashMapLinkedLists(性能方面,如果从技术上讲不是真的),TreeMultimap是a
TreeMapTreeSets,ImmutableSetMultimap是a
ImmutableMapImmutableSets,ImmutableListMultimap是a
ImmutableMapImmutableLists。


唯一可能不言而喻的事情可能是SortedMultiset实现提供subMultiset().size()O(log n)及时的操作,而您不能仅使用JDK进行操作TreeMap<E, Integer>

集合的所有视图(我们非常喜欢视图)会在恒定时间内返回并具有您期望的渐近性。

您还有其他更具体的问题吗?

(一般来说,Guava基本上是Google在生产中使用的核心库,我想认为这是有力的证据,证明这些实用程序在重载环境中的性能令人满意。此外,Guava也在不断改进,您可以获得这些改进。基本上是免费的。)



 类似资料:
  • 其实并不重要。 已有很多人花费很多笔墨来讨论是使用单引号(')还是双引号(")来定义字符串。 单引号字符串不会被解析,因此放入字符串的任何东西都会以原样显示。 双引号字符串会被解析,字符串中的任何 PHP 变量都会被求值。 另外,转义字符如换行符 \n 和制表符 \t 在单引号字符串中不会被求值,但在双引号字符串中会被求值。 由于双引号字符串在程序运行时要求值,从而理论上使用单引号字符串能提高性能

  • 问题内容: 我对Linux文件系统比较陌生,所以请您能帮我吗?我必须使用Ubuntu编写一个示例C ++项目(测试)。 您可以从开发人员的角度来说明一下文件/文件夹结构吗?以下是一些我想回答的问题: 项目的典型位置在哪里(源,目标文件等)? 开发环境的典型位置(Eclipse,QT Creator等)在哪里? 图书馆的典型地方在哪里?二进制文件和仅标头的库有不同的位置吗? 各种开发工具(代码分析器

  • 招人标准 先说下我的招人标准,做技术总监时上指下派只要看好技术能力和态度即可,做CTO时要考虑团队文化,人品和能否在公司长留,所以不同的人面试要看的点是不一样的,我曾面过很多Node.js程序员,也见过很多面试题,汇总一下,大致有以下9个点: 基本的Node.js几个特性,比如事件驱动、非阻塞I/O、Stream等 异步流程控制相关,Promise是必问的 掌握1种以上Web框架,比如Expres

  • 让我们假设以下两种情况,一个控制器产生一些随机数并带有延迟: 1)反应性Spring5反应性应用: 2)传统的Spring MVC与: 从HTTP客户端(浏览器、AJAX请求)的角度来看,这两种场景之间没有任何区别。我的意思是,客户端将等待所有结果发送,并且在提交整个响应之前不会处理它们。 也就是说,尽管spring web Responsive让我们认为它在生成结果时会将结果发送回去,但实际上情

  • 我是Flink的新手,偶然看到一篇文章提到 “flink开发人员负责通过在流中安排水印来向前移动事件时间”。 所以,我想出了可能的答案。据我所知,如果我指示程序每隔秒发出水印。实际上,每隔5秒,Flink就会调用的方法。如果该方法返回一个时间戳大于前一个水印的时间戳的非空值,则会转发新的水印。此检查对于确保事件时间不断增加是必要的;否则,不会产生水印。 因此,一旦窗口中的所有内容都到达,它将触发操

  • 本文向大家介绍详解Python并发编程之从性能角度来初探并发编程,包括了详解Python并发编程之从性能角度来初探并发编程的使用技巧和注意事项,需要的朋友参考一下 . 前言 作为进阶系列的一个分支「并发编程」,我觉得这是每个程序员都应该会的。 并发编程 这个系列,我准备了将近一个星期,从知识点梳理,到思考要举哪些例子才能更加让人容易吃透这些知识点。希望呈现出来的效果真能如想象中的那样,对小白也一样