Defragmentation and file position optimization are
two different things.
The Sysinternals "contig" program, is an example of a
"pure defragmenter". It is happy if all the clusters
are in a row. It doesn't care where on the disk the file
ends up. It does no position optimization at all.
WinXP defragmenter has a simple optimization policy.
Not only does it defragment files, it also "slams them
to the left". It also does something with regard to
prefetch files (that's one of its other jobs).
Win7/Win8/Win10, the defragmenter design is no longer
done by President Software. It's a Microsoft design. It
doesn't "slam" to the left exactly. It can leave small gaps
between files and be happy with that. The files are
"mostly to the left". It is not supposed to touch files
over 50MB in size or so, as there likely
isn't a good performance reason to optimize data files
that big. It has no block display, because the end users
would be "petrified" if they saw the block pattern :-)
And if you use the JKDefrag option to just display the
"colored blocks",
(In an Administrator command prompt window...)
JkDefrag.exe -a 1 -d 2 c:
you'll see the Microsoft defragmenter does a damn good job. It's a good tradeoff
of "quality of defrag", versus the time spent on it.
And if you let the scheduled operation run regularly,
the level of fragmentation seen by the user is
relatively small.
It's still possible to "massacre" a modern C: drive. The
thing that kills them, is if NTFS compression is used
on WinSXS area. Any time that area is scanned later,
for whatever reason, it runs a lot slower. And this might
have to do with the way the NTFS compression leave gaps
in the file it works on. If you do a "cleanmgr.exe" run,
select some options and you find it takes 3 hours
to finish, it's been off compressing infrequently referenced
files. And it's not exactly easy to remove that, without
side effects. (The utility to do that, messes up the ownership
of the files. There are recipes for dealing with that,
but it's still a lot more work than it should be.)
One difference between JKDefrag and MyDefrag (both written
by the same guy), it MyDefrag was supposed to add scripting
capability. So you could define your own optimization policies.
As an example of one I'd like, is "slam to the right plus
defragment". The idea is, you remove the frequently referenced
files from the disk, and leave the "cruft" you have no reason
to look at. By "slam to the right", that moves the infrequently
referenced files onto the slow part of the disk. Then, later,
when you add your new, important files, they on the left hand
part of the disk, which is up to twice as fast. That would
be an example of something I might want to program into a
defragmenter. JKDefrag had some "canned" patterns, but
by offering scripting, that should allow people with
their own ideas, to test them out.
Paul