Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Данный PR реализует прототип алгоритма A*, который работает в 2 потока
Детали реализации:
Результаты тестов. Три прокладки подряд, с одними и теми же стартами и финишами:
MacOS:
Виден ощутимый прирост скорости. Было 17 сек стало 10 сек.
Москва - Тверь (200920) MacOS
55.750441, 37.617514; 57.036356, 34.965072 (bicycle)
В 2 потока ms
12342, 10769, 10678
В 1 поток ms
19641, 17767, 16435
Москва - Рязань (200920)
55.750441, 37.617514; 54.806649, 39.861445 (pedestrian)
В 2 потока
12682ms, 9309ms, 9156ms
10.7602 s, 9.31902 s, 9.34944 s
В 1 поток ms
15394, 14530, 14560
17.7066 s, 14.7042 s, 14.5302 s
Android s10e
Стало медленнее. Было 4 секунды, стало 5.
(55.796456, 37.536991; 55.592107, 37.673773) 200822
2 потока. Андроид.
4.88698 s
4.90258 s
4.80515 s
В 1 поток
4.11945 s
3.92234 s
3.97615 s
iPhone SE
Стало медленнее. Было 4 секунды, стало 5.
(55.860735, 37.436494; 55.621144, 37.743771) 200822
2 потока.
29.8465 s
27.3 s
27.8736 s
27.7563 s
В 1 поток
23.8147 s
21.8057 s
21.4761 s
Сейчас пробую убрать синхронизацию с обращения к графу дорог. На iPhone SE вместо 3 секунд получается проложить за 2.
Время прокладки маршрута можно определить при помощи поиска по:
~ScopedTimerWithLog() ***FindPath*** time: