On a repo with a long history this might cost a lot of memory. Wouldn't it make sense to limit the size of the cutOff list? Even a incomplete cutOff list helps.

Another idea: can't we mark the direct parents of commit as "uninteresting" in the RevWalk?