【问题标题】:What are the best practices for benchmarking different Java collections?对不同 Java 集合进行基准测试的最佳实践是什么?
【发布时间】:2011-10-19 10:17:14
【问题描述】:

我手上有几个有趣的 Java 集合,例如:

  1. http://code.google.com/p/guava-libraries/
  2. Java 7
  3. Java 7 并发集合
  4. Scala 集合
  5. 我们在某些公司拥有的自产系列

我想知道测试这些 API 的最佳实践是什么,从性能和可扩展性的角度来看,即哪个是最快的、最具可扩展性的、高性能的等等。我应该设置数百万个随机元素并使用计时器或者是其他东西?只是想满足我的好奇心,看看哪一个会赢。

【问题讨论】:

  • 与所有基准测试一样,您必须测试您感兴趣的性能特征。一种用法的赢家可能是另一种用法的赢家。所以问问自己:我认为哪些特征很重要并衡量它们!
  • 同意,使用一个集合的便利性可能超过为一小部分数据节省几毫秒的意图。
  • 但是,它仍然可能是为了让您可以识别集合类的一些一般用例 - 例如“对 1 000 000 个对象的非同步插入的最快链表”等。这样的测量是相当通用的。

标签: java data-structures collections java-7


【解决方案1】:

There's a white paper on somebody benchmarking Java collections。不过,我没有看到任何源代码。

【讨论】:

  • 没有代码,我个人认为那篇论文完全 100% 没用。
  • 给这个人发一封电子邮件。也许,稍加推敲,他会把代码放在 github 上。
  • 嗯,从性能的角度来看,我发现它很有用,尤其是如果您想进行采样。
【解决方案2】:

编辑:更新了指向 github 上自动导出项目的链接

查看Caliper。它将在今年秋天发布 1.0 版本,但许多人已经在使用它并取得了不错的效果(通过从源代码构建它;抱歉)。

不过,请浏览https://github.com/google/caliper/wiki/JavaMicrobenchmarks 上的一些 ScareText。

【讨论】:

  • 嗯,这些是帮助编写基准测试的工具。基准仍然缺失。虽然其中一个示例是数组排序基准。
猜你喜欢
  • 1970-01-01
  • 2017-11-16
  • 2019-03-16
  • 1970-01-01
  • 2010-09-13
  • 1970-01-01
  • 1970-01-01
  • 2010-09-17
  • 2010-11-16
相关资源
最近更新 更多