Когда я написал предыдущее свое сообщение, то понял что еще больше могу ускорить процесс своих вычислений, отказавшись от временного массива точек-соседей, т.к. это был всего лишь промежуточный итог, чтобы объяснить свою задачу здесь на форуме. Конечный этап моих поисков - получить не массив точек-соседей, а массив ж.д.путей-соседей вблизи расчетной точки P.
Владимир Линейцев пишет:Вот этот новый массив соседних путей IdTrackAll будет подгружен в каждую точку P общего массива TrackAll для дальнейшего его использования. Для чего мне это нужно? Чтобы в дальнейшем определить в междупутье каких путей находится точка P, а также определить пикетаж этой точки и расстояние до этих соседних (ближайших) путей.
В результате получил еще получил 8.15-6.02=2.13 сек экономии времени, т.к. убрал некоторые ReDim Preserve и лишние вычисления.
НО... Далее начал наворачивать свою программу.
Хочу добавить сетку координат на чертеж с наперед заданным шагом, как правило, 100 м. Мои 25000 точек - это 40.5 км трассы железной дороги с общим направлением на северо-восток. Так вот, написав простую процедуру рисования координатных крестов, получил сплошное заполнение крестами всего чертежа от Xmin,Ymin до Xmax,Ymax, что как-бы скрыло полезную информацию на чертеже. Это мне не понравилось.
Мне нужно было координатные кресты расположить вблизи трассы железной дороги и опять же не далее чем R метров от главного ж.д.пути (чтобы при удалении группы лишних крестов случайно не удалить еще чего-нибудь с чертежа). Попробовал все кресты в диапазоне от Xmin,Ymin до Xmax,Ymax пропустить через выше созданный алгоритм. Затраты времени около 40 минут, т.к. самих крестов оказалось 188х300=56400 шт. Непреемлемо для меня! Здесь же попробовал поэкспериментировать с ReDim Preserve.
Александр Ривилис пишет:ты активно используешь ReDim Preserve внутри вложенного цикла. Думаю, что и на ней могут быть существенные потери времени.
Получилось что при формировании массива координатных крестов с ReDim Preserve времени тратилось меньше на 1 секунду.
В конечном счете я нашел правильный алгоритм и для этой задачи, сократив количество крестов до 2200 шт вблизи ж.д. В результате время счета увеличилось на 1.04 мин и составило 6.02+1.04=7.06 мин. Это здОрово! В дальнейшем еще попытаюсь сократить время счета.