Three possible algorithmic improvements to consider:
Improvement to search
Djikstra's algorithm will explore all points within S of the start node, where S is the shortest distance between the start and the end.
If you use an A* search (e.g. with a heuristic of the Euclidean distance to the goal) then you should find that many fewer points need to be explored.
Improvement to edge construction
Depending on how the points are distributed, you may find it better to find the edges within a distance D by:
- Imagine a grid of side length D being overlaid on the plane
- Add each point into a bucket corresponding to which grid square it belongs to
- When you need to find the neighbours of a point, you only need to test points in the neighbouring buckets instead of every point.
Improvement to preprocessing
Depending on the distribution of the points, you may well find that it is more efficient to only construct the valid edges when you reach a vertex, rather than precalculating all edges.
This potentially saves a lot of time if the start and destination are close.