I think Toady should also look into memoizing paths. I remember that he said that couldn't do that because paths could change randomly, so a path that worked in the past might not work anymore. You might have water flood across a hallway, or a door might get locked, or something else. However, there's no reason that the dwarves would know that until they get to the barrier. It would be more realistic if they tried the old path, found out it was blocked, and then started the pathfinder to get a new path.
One trick that might help with pathfinding would be to define some 'centers'. All paths would lead to and from those centers. This would help with both memory and CPU issues.
Without centers, if you have 300 different places you want to go to, and you want paths to get to and from every place to any other place, you'd need to make 44,000 paths. Each path might take up around 1 KB, so you'd end up with 44 megabytes of paths, and you'd need a lot of CPU time to make all of those paths. However, if you want all of those places to go to and from one center, then you only need 300 paths. That keeps the pathing information down to just 300 KB, and it wouldn't take so long to get those paths.
The way that Toady could do it most easily, I think, is to define buildings, rooms and stockpiles as 'places'. The wagon at the embark site could serve as an initial default center. Other centers could be defined based on traffic. A frequently-visited stockpile could become a center. A main stairway connecting some floors could be defined as a center as well. The trade depot might become another center. Each 'place' would store a path to the 3 nearest centers, and each center would store a path to all other centers. To get a path to some location, you'd start at where the dwarf is, and find the nearest 'place'. Next, you'd find the 'place' nearest to where the dwarf wants to go. Next, you'd look at the three centers for each place, and determine which of the 9 possible paths is the shortest (the length of each path would obviously be stored so it doesn't need to be recalculated each time).
When a dwarf tries a path and finds that it doesn't work, then a new path would be found, and the dwarf would run the old pathfinder to get around the obstacle.
So, to keep the Performance Arc list going:
1 - Performance profiling
2 - Multi-threading
3 - 64-Bit Dwarf Fortress
4 - Path memoization
5 - SSE1/SSE2?
6 - MSX?
7 - ?
8 - Profit!