Скрипт 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 -> случайный № 5 и ip № 4 -> случайный № 5. Таким образом, для объекта O с k полями будет возможно k новых вершин и k * (k - 1)/2 ребер.

Мой вопрос... можно ли улучшить мой код? Я пытался работать с JSON с 10 000 объектов, каждый с 7 полями, но это требует времени. Как я могу добиться этого быстрее? Могу ли я обрабатывать пакеты данных? Я слышал об индексах, но не знаю, что это значит и как это может все улучшить.

[1] Обычный формат JSON в GraphSON

[2] https://pastebin.com/g7qnQdq9

Редактировать: Хорошо, я жестко закодировал несколько команд graph.createIndex(X,Vertex.class), где X = имя полей в моем JSON. Вроде быстрее, да. Как я могу улучшить его? Что я делаю не так и как я могу сделать это лучше? Должен ли я вместо этого пытаться сгенерировать JSON в формате, в котором гремлин экспортирует график? Я думаю, что добиться такого формата чрезвычайно сложно. Я не могу найти надлежащую документацию и отчаянно пытаюсь найти ответ, так как это проблема, связанная с работой.

Редактировать 2: Кстати, я только что попробовал этот скрипт => https://pastebin.com/Uts4KQCH с 50 000 объектов JSON и около 38 000, это сильно замедлилось, например, с 1000 за 1,5 секунды до 1000 за 30 секунд.


person Adrian Pop    schedule 06.07.2017    source источник
comment
попробуйте использовать @groovy.transform.CompileStatic   -  person daggett    schedule 07.07.2017
comment
Это не очень работает, теперь у меня просто много ошибок с типами.   -  person Adrian Pop    schedule 07.07.2017