So at this point, we have a LinkedList of commits from oldest->newest? Which means you are digging through the blame data from the original file up to the current version.

Which ignores my point I made earlier. Most users of `git blame` are using it to look at recent history and don't need data going back to the root. Starting from the root and working forwards to HEAD means the user has to wait for you to compute a bunch of stuff they don't need right now.