Here is a quotation of an interesting feature of another disk defragmanter (http://www.dirms.com/home/docs/dirms1.asp
Other programs actually leave little gaps between files. These do not show up on their interactive displays, so you might not know you even have them! Though you might wonder why a disk that's only 80% full has no visible free areas.
A dreaded problem that we have found with drives that are 2/3 full or so is little gaps, or file interstices. They are between 1 and 15 clusters in size (always less than 16), and sit between most files. This eats up a great deal of free space, and NTFS, in its infinite stupidity, will start sticking files in there when a larger free space is available, causing files with hundreds of fragments. Yet all (as of the time this was written) other defragmentation programs make such interstices when defragmenting!
The reason has to do with the way NTFS works. After using the defrag API functions in the operating system to move clusters, the destination area is internally rounded up to a multiple of 16 clusters. The little gap thus created cannot immediately be used as the destination of another move, so programs like Diskeeper just skip ahead to the next available spot. After a few seconds, these clusters become available for writing in the normal way. We believe this has to do with the NTFS journal commitment. Anyway, if you don't wait it out, you leave little gaps.
Knowing this, dirms will pack files tight with no gaps. You can ask it to simply slide each file to the left as far as it can, thus incrementally consolidating your free space. Or you can move files into holes without causing these gaps. More on these options in the following sections.
The big problem is that waiting it out is slow. Several seconds is not bad, but magnify it by several thousand files, and you're looking at several days to do a complete defragmentation! So, thoughtful use of dirms will let you make incremental improvements each night, or perform more modest cleanups without adding to the interstice count.
Does JKDefrag perform as well ?