I am writing courier / logistics simulations on OpenStreetMap maps and realized that the basic A * algorithm, as shown in the figure below, will not be fast enough for large maps (e.g. Greater London).

The green nodes correspond to those that have been placed in the open dialing / priority queue, and due to the huge number (the entire map is approximately 1-2 million), it takes about 5 seconds to find the drawn route. Unfortunately, 100 ms per route is my absolute limit.
Currently, nodes are stored both in the adjacency list and in the 2D 100x100 spatial array.
I am looking for methods where I can exchange pre-processing time, space and, if necessary, route optimality, for faster requests. The direct Haversin formula for heuristic costs is the most expensive function according to the profiler - I have optimized my main A * as much as possible.
For example, I thought, if I select an arbitrary node X from each quadrant of a 2D array and run A * between each, I can save the routes to disk for future simulations. When prompted, I can start the A * search only in quadrants to go between the pre-calculated route and X.
Is there a better version of what I described above, or maybe another method that I should pursue. Thank you very much!
For the record, here are some test results for arbitrary weighting of heuristic costs and calculation of the path between 10 pairs of randomly selected nodes:
Weight
Amazingly increasing the coefficient to 1.1, the execution time was almost halved, keeping the same route.
algorithm a-star graph-algorithm openstreetmap shortest-path
drspa44 Apr 15 '15 at 17:32 2015-04-15 17:32
source share