I often find myself comparing entire project directories. It can take a long time to compare a whole branch. One way to speed this up is to compare only the top-level directory, but that doesn't help me see where the differences are.
Perhaps one solution would be to default to a Tree Mode view, and show only the top level initially (subfolders collapsed) -- but as soon as that level is displayed, begin "pre-fetching" or comparing the subfolders under it. I think the best approach is to perform a "breadth-first" comparison, checking for differences in child nodes of the top-level node first before continuing on to children of the first child directory. As soon as ANY difference is found, the comparison engine should move back up the tree and mark that directory branch different.
Remember, this is all taking place before I ever click the "+" sign on one of the folders in my top-level comparison directory. Until a difference is found, a question-mark or "cycle" icon should display on the directory. If no difference is found in the whole subtree, then a checkmark appears, otherwise the exclamation icon appears.
Once I click the "+" sign on a directory, the process continues on that directory (unless its already been fully indexed). If another directory is currently being indexed, that search is paused so that full attention can be devoted to the current expanded directory.
The end result is just like a current tree-mode view of a folder comparison; the only difference is how soon I can start viewing the comparison results.