Время происка ближайшего объекта в таблице
-
- Новоприбывший
- Сообщения: 10
- Зарегистрирован: 24 ноя 2009, 16:46
- Репутация: 0
Время происка ближайшего объекта в таблице
Решается задача поиска ближайшего объекта (точки) в таблице MapInfo к указанным координатам. Доступ к таблице осуществляется через библиотеку MapXtreme. Есть несколько таблиц. Для таблицы в которой 38 тыс. записей поиск выполняется менее одной секунды, это приемлемый результат. Для таблицы в которой 67 тыс. записей запрос выполняется более 5 секунд, это очень много. Неужели при увеличении количества записей так замедляется выполнение запроса? Или выполнение запроса зависит от каких-либо параметров таблицы? Может быть колонка геометрии как-то индексируется? Спасибо.
-
- Гуру
- Сообщения: 4205
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: Время происка ближайшего объекта в таблице
Задача поиска ближайшего соседа - есть задача n*p перебора, где n и p размерности сопрягаемых таблиц. Для точек - она линейна от функции сравнения. Для геометрических фигур - нет, т.к. включает еще перебор всех вершин. Хотя тут уже существуют некоторые алгоритмы оптимизации.
Если 37 тыс = 1 сек, то 68 будет в 68/37*68/37 = 3.38 раз дольше. Если результат отличается сильнее, значит начинает сказываться обращение к памяти.
---
В общем случае, для задач такого рода стандартным является использование алгоритма предрасчета. Правило - считаешь 1 раз (сколько угодно долго), пользуешься - часто. В дальнейшем производится перерасчет только для добавляемых - изменяемых точек, плюс некоторое их разумное окружение. На пример, удесятерённое кратчайшее расстояние.
Если 37 тыс = 1 сек, то 68 будет в 68/37*68/37 = 3.38 раз дольше. Если результат отличается сильнее, значит начинает сказываться обращение к памяти.
---
В общем случае, для задач такого рода стандартным является использование алгоритма предрасчета. Правило - считаешь 1 раз (сколько угодно долго), пользуешься - часто. В дальнейшем производится перерасчет только для добавляемых - изменяемых точек, плюс некоторое их разумное окружение. На пример, удесятерённое кратчайшее расстояние.
-
- Новоприбывший
- Сообщения: 10
- Зарегистрирован: 24 ноя 2009, 16:46
- Репутация: 0
Re: Время происка ближайшего объекта в таблице
Как выполняется расчет, понятно, спасибо. Может быть, по опыту работы, можете сказать 5 секунд на 67 точках это долго или это нормальное время? Нужно искать стандартные средства для уменьшения времени или лучше думать над алгоритмом предрасчета?
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 15 гостей