【问题标题】:Resources for understanding Fastutil internals了解 Fastutil 内部的资源
【发布时间】:2020-08-06 17:16:00
【问题描述】:

我正在寻找资源来了解 Java 数据类型是如何在内部实现的,以及 Fastutil 和 Eclipse Collections 等库如何提供更快的相同实现。我厌倦了浏览 Github 上的代码库(分别为 https://github.com/vigna/fastutilhttps://github.com/eclipse/eclipse-collections),但我只知道使用了代码生成器。

但是使用了哪些代码生成器?它们是如何使用的?为什么生成的代码性能更好?如果这些实现更好,为什么它们不是 Java 中的默认实现?

我正在寻找涵盖该主题的任何类型的资源/阅读清单。 Youtube 和 Google 没有多大帮助。

谢谢

【问题讨论】:

  • 您是否考虑过阅读代码并使用分析器进行比较?
  • 更多的是,声称自己更快,让像您这样的用户盲目相信这些说法。

标签: java performance collections fastutil eclipse-collections


【解决方案1】:

Eclipse Collections 使用StringTemplate 生成其原始集合。

您可以在this directory 中的 Eclipse Collections 存储库中查找模板(在资源下)和代码生成器的代码。

代码生成本身不会产生性能改进。使用原始集合可以提高内存和性能。避免对所有原始类型的集合进行手动编码是 Eclipse 集合使用代码生成的原因。

有一篇文章here 解释了一些使用 Eclipse Collections 的优化策略。

JEP 218: Generics over Primitive Types 旨在解决 Java 中装箱的性能问题。

您应该通过为您的应用程序分析或编写基准来验证任何预期的性能提升。

注意:我是 Eclipse Collections 的提交者。

【讨论】:

    猜你喜欢
    • 2016-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 2020-11-19
    • 2017-07-08
    相关资源
    最近更新 更多