Unfortunately I'd say there's no good defragmenter, at least not for win xp and newer (probably because of Microsoft's decision to reverting back to single-cluster defrag, more info about this
here). The best defragmenter I've used is Norton Speed Disk 2001 (which come bundled with Norton Utilities 2001) but that is for Win 98 SE xD I've compared it to all the newer defragmenter for win xp and found that it is really can't be beaten in terms of speed, functionality, and effectiveness. With Norton Speed Disk 2001, I can defrag the whole 20 GB of system partition in less than 30 minutes, while using the other defragmenter in win xp, the fastest defragmenter I've tested would take more than 6 hours! (DiskTrix's Ultimate Defrag) And that wasn't using the full defrag option...
So I'd say, you should forget about defragmenting your harddrive in Win XP or newer OSes, or if you insist, I recommend DiskTrix Ultimate Defrag because it is the fastest and most efficient defragmenter judging by the test I've done before. Though I don't know (and don't want to know) how much time would it take to defrag a partition > 20 GB if it even take 6 hours to defrag a 20 GB partition.... I'd say good luck! LOL