用于高性能图形/网络数据结构的java库

时间:2011-02-14 13:19:07

标签: java performance graph

那么,是否有一个用于处理原始数据的高性能图形库,没有那些泛型/自动装箱开销?对于双重列表,您可以使用trove,对于线性代数,您可以使用netlib-java(示例可以让您更好地理解我对此问题的兴趣点。)

至于Graphs / Networks:我发现的所有lib都使用泛型,而且应该不是那么高效。我也可以为此做一些测试,但我相信堆管理的网络链接权重将低于double [],并且有一些位偏移来获得i和j的索引。使用场景:有数百个大小为4k * 4k的网络(大多数是稀疏的),在这组网络上运行一些遗传优化,对每个样本进行一些流量/最小路径估计。

所以,有:JGraphTJUNGANNASJDSL(这些链接会导致API /代码示例暴露出可怜的Java Generics / Object所有这些包装纸)。有任何Trove-ish替代品吗?我已经创建了一些简单的实现,但只是决定四处寻找以避免发明合适的自行车......

任何意见,建议?

谢谢, 安东

PS:请不要开始使用泛型Java代码的性能,至少没有链接到一些不错的基准测试,好吗? ;)

3 个答案:

答案 0 :(得分:2)

你看过neo4j了吗? - http://neo4j.org/

答案 1 :(得分:0)

您可以使用一些带行压缩的稀疏矩阵。不是最好的,也不是专业的,但你可以建立它。

嗯,有一些通用的稀疏矩阵实现,它们不会混淆泛型和一个相当可靠的性能基准: 谷歌代码java-matrix-benchmark ujmp related overview

最有说服力的是MTJ's sparse matrix

如果您有任何建议或更新,请添加问题的答案。我会接受任何更好的想法。感谢。

答案 2 :(得分:0)

如果需要高性能数据结构,则应检查fastutil项目,这在Java Collection Framework的时间和内存实现方面都是有效的。实现了性能,也避免了装箱和拆箱原始类型。

Fastutil是非常有效的数据结构。如果您需要图形ADT实现,则可以基于fastutil检查this,这是一种高效的内存图实现。 该项目是我的硕士论文的一部分,该论文涉及大图中的社区检测。

希望它有所帮助!