我正在寻找资源,以了解Java数据类型是如何在内部实现的,以及像Fastutil和Eclipse Collections这样的库如何提供更快的实现。我已经看遍了Github (分别是https://github.com/vigna/fastutil和https://github.com/eclipse/eclipse-collections )上的代码库,但我只知道使用了代码生成器。
但是使用了什么代码生成器呢?它们是如何使用的?为什么生成的代码执行得更好?如果这些实现的性能更好,为什么它们不是Java的默认实现呢?
我正在寻找任何涉及这个主题的资源/阅读列表。Youtube和谷歌并没有起到多大作用。
谢谢
发布于 2020-04-24 10:47:49
Eclipse collections使用StringTemplate来生成其原始集合。
您可以在this directory中的Eclipse Collections存储库中查找代码生成器的模板(在参考资料下)和代码。
代码生成本身不会带来性能改进。使用原语集合可以提高内存和性能。避免对所有原语类型的集合进行手工编码是Eclipse Collections使用代码生成的原因。
有一篇here文章解释了使用Eclipse Collections的一些优化策略。
JEP 218: Generics over Primitive Types旨在解决Java中装箱的性能问题。
您应该通过分析或编写应用程序的基准测试来验证任何预期的性能增益。
注意:我是Eclipse Collections的提交者。
https://stackoverflow.com/questions/61386226
复制相似问题