Hi, I'd like to give several suggestions regarding defragmentation efficiency and minimizing fragmentations.
1. Add an option for not to defrag "fragments whose size is greater than x mega bytes". Defragmenting large files (eg. several hundred MB or several GB) that have small number of fragments are IMO, waste of time and the result doesn't impact on data transfer rate that much. This option should apply for both drive and file based defragmentation.
2. For drive-based defragmentation, a manually editable file exclusion list should be present. These files should be treated as "breakable" and will not be defragmented (aka. "don't touch"). It'll speedup the defragmentation process when properly used. Note: This option should take top priority over any other options.
3. In complement of suggestion #2, a manually editable file list for placing the files to the end of the disk should be present. These files should be the ones that have low access priority (file read speed is not important). With this option, all newly created files will be automatically placed either at the start or at the middle of the disk, since the end area are already used. So it'll give better performance for new files. When re-defragmenting, the listed files (after adding them into the excluded file list; or with a new "auto add" option) will never need to be touched since they are already defragmented and at the right place. Thus this option can lower the time needed for defragmentation.
4. Add an option for placing "files whose last modification date is less than x days" to the end of the used area (before the free space area). These files are the ones that are frequently changed/written. Most applications uses temporary files when saving data to the file and preserve the original file until the new one is successfuly stored, in which will create "hole" at the area where the old file is. This option can minimize "hole" creation (or free space fragments).
I hope I explain it clearly. I used to use Norton SpeedDisk since it has excellent defragmentation rules, but I can't stand its low fragmentation speed. Norton SpeedDisk defragmentation driver is slower than Windows internal defragmentation engine. Currently, I use O&O Defrag and Defraggler, but O&O Defrag is getting more and more bloated in each version without any better control over the defragmentation process.