check-conflicts + check-common-dirs was grossly inefficient: scan the tree twice, using slightly different logic.
Enter check-problems, which does some kind of "unified scan", and performs both the work of check-conflicts and check-common-dirs check-problems: 26m16.67s real 18m12.75s user 3m19.04s system check-conflicts: 20m42.67s real 12m54.77s user 3m9.87s system check-common-dirs: 23m28.87s real 16m10.01s user 2m48.22s system E.g., check-problems is slightly slower in full mode than either of the scripts, but it does the work of both. To be documented shortly, I haven't had the time to write a proper manpage and the options are slightly in flux. Basically check-problems -d plistdir -p portsdir will scan the plists in plistdir and use portsdir as backup for figuring out the "current" packages. useful options include -C (don't perform conflict check) -D (don't perform common-dir check) -o output (duh)...