Groovy скрипт для создания графа - сделать его быстрее
Мой вопрос является продолжением вопроса, который я задал здесь => [1]. После долгого разговора со Стивеном Маллеттом он показал мне, как я могу построить график, который будет загружен при запуске сервера. Мой последний сценарий - это [2]. Что я хочу сделать? Допустим, у меня есть:
[
{
"host": "google.com",
"ip": "8.8.8.8",
"random": 25
},
{
"host": "google.com",
"ip": "1.2.3.4",
"random": 10
}
]
Там будет вершина со свойством "host" со значением google.com (#1). Будет вершина со свойством "ip" и значением 8.8.8.8 (#2), а другая со свойством "random" и значением 25 (#3). Также я создам 3 ребра. хост № 1 -> ip № 2, хост № 1 -> случайный № 3 и ip № 2 -> случайный № 3. Для другого объекта я не буду создавать другую вершину google.com, потому что она уже существует, но я создам ip #4 и случайную #5. Я создам хост #1 -> ip #4 edge, хост #1 -> random #5 и ip #4 -> random #5. Таким образом, для объекта O с k полями будет возможно k новых вершин и k * (k - 1) / 2 ребер.
Мой вопрос... можно ли улучшить мой код? Я пытался работать с JSON с 10k объектами, каждый с 7 полями, но это отнимает время. Как я могу добиться этого быстрее? Я не могу обработать пакеты данных? Я слышал об индексах, но я не знаю, что это значит или как это может улучшить все.
[1] Нормальный формат JSON в GraphSON
[2] https://pastebin.com/g7qnQdq9
Редактировать: Хорошо, я жестко запрограммировал несколько команд graph.createIndex(X,Vertex.class), где X = имя поля в моем JSON. Вроде бы быстрее, да. Как я могу еще улучшить его? Что я делаю не так и как я могу на самом деле сделать это лучше? Должен ли я попытаться сгенерировать JSON в формате, который gremlin экспортирует граф, вместо того чтобы делать это? Я думаю, что достичь этого формата чрезвычайно сложно. Я не могу найти надлежащую документацию, и я отчаянно пытаюсь найти ответ, так как это проблема, связанная с работой.
Редактировать 2: Кстати, я только что попробовал это => https://pastebin.com/Uts4KQCH скрипт с JSON объектов 50k и около 38k, он как бы сильно замедлился, как с 1000 за 1,5 секунды до 1000 через 30 секунд.