I thought the algorithm you are using could use a
little optimization, so I did some research. It turns out that if you plan
your path from the start and finish simultaneously, you cut the number of tiles
you have to search in half (usually). For example:
Your
method: