Java-библиотека для высокопроизводительной структуры граф / сеть данных - PullRequest
2 голосов
/ 14 февраля 2011

Хорошо, есть ли высокопроизводительная библиотека графов для работы с примитивами, без этих непроизводительных издержек / накладных расходов на автобокс?Для двойных списков вы можете использовать trove , для линейной алгебры вы можете использовать netlib-java (примеры, которые помогут вам лучше понять смысл моего интереса к этому вопросу).

Что касается графиков / сетей: все библиотеки, которые я нашел, используют дженерики и должны быть не такими производительными.Я мог бы также сделать некоторые тесты для этого, но я считаю, что веса сетевых ссылок, управляемых кучей, будут хуже, чем удвоение [] с некоторыми смещениями битов, чтобы получить индекс для i и j.Сценарий использования: существуют сотни таких сетей (большинство из них разреженных) размером 4k * 4k, в этом наборе сетей выполняется некоторая генетическая оптимизация, которая выполняет некоторые оценки потока / мин для каждого образца.

Итак, есть: JGraphT , JUNG , ANNAS , JDSL (ссылки ведут на API / примеры кода, которыеразоблачить жалкие обертки Generics / Object во всех них).Есть ли альтернативы Trove-ish?Я уже создал несколько упрощенных реализаций, но просто решил осмотреться, чтобы не изобретать подходящий велосипед ...

Есть какие-то мнения, предложения?

Спасибо, Антон

PS: Пожалуйста, не начинайте с производительности обобщенного Java-кода, по крайней мере, без ссылки на какой-нибудь достойный тест, хорошо?;)

Ответы [ 3 ]

2 голосов
/ 22 февраля 2011

Вы смотрели на neo4j?- http://neo4j.org/

0 голосов
/ 23 августа 2014

Если вам нужны производительные структуры данных, вы должны проверить проект fastutil , который является эффективной как во времени, так и в памяти реализацией Java Collection Framework.Производительность достигается также за счет исключения упаковки и распаковки примитивных типов.

Fastutil - очень эффективная структура данных.Если вам нужна реализация графа ADT, вы можете проверить this , который является эффективной реализацией графа памяти, основанной на fastutil.Этот проект был частью моей диссертации, посвященной обнаружению сообщества на больших графиках.

Надеюсь, это поможет!

0 голосов
/ 10 марта 2011

Вы можете использовать некоторую разреженную матрицу со сжатием строк.Не лучший и не специализированный, но вы можете опираться на него.

Что ж, есть некоторые универсальные реализации с разреженными матрицами, которые не связываются с универсальными, и один довольно солидный тест производительности: java-matrix-benchmark в коде Google обзор, связанный с ujmp

Наиболее убедительным является разреженная матрица MTJ .

Пожалуйста, добавьте ответы на вопросесли у вас есть какие-либо предложения или обновления.Я приму любые лучшие идеи.Благодаря.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...