Я не могу указать вам на существующую библиотеку, которая имеет лучшую производительность, но, насколько я помню, GeoModel является открытым исходным кодом, и код не сложен для понимания.Мы обнаружили, что могли бы улучшить скорость, настроив код в соответствии с нашим сценарием.
Например, если вам не нужен ближайший-n, вам просто нужны результаты X из определенного ограничивающего прямоугольника или радиуса, вы, вероятно, можете улучшить скорость GeoModel, поскольку GeoModel в настоящее время должна получать каждую запись всоответствующий geohash, а затем сортирует по ближайшему в памяти.(Подробности этой реализации оставлены в качестве упражнения для читателя.)
Вы также можете подумать о настройке того, сколько уровней геохеша вы используете.Если у вас много плотных данных и вы делаете запросы по небольшим областям, вы можете значительно повысить производительность, сохранив 16 уровней вместо 8 или 12.
(я сейчас не смотрю на источник GeoModel, но вспоминаюкогда я последний раз использовал его несколько месяцев назад, так что возьмите это с крошкой соли и погрузитесь в исходный код самостоятельно.)