В продакшине малоудобоваримо из-за таких вот случаев:
https://yadi.sk/d/2pdIHLwpV5As3
На вычисление границ и вызов Distance тратится очень много времени:
решение - модернизировать алгоритм:

кластеризовывать объекты группами неболее 50 объектов(например)
Далее кластеризовывать эти группы, но так чтобы сумма объектов в новых группах не превышала 100-150.
И так далее пока будут оставаться группы которые можно объединить.