Considering solid-state disk space is still an expensive resource, compressing large folders has appeal. Thanks to VirtualStore, could Program Files be a case where it might even improve performance?
Discovery
In particular I have been reading:
SSD and NTFS Compression Speed Increase?
Does NTFS compression slow SSD/flash performance?
Will somebody benchmark whole disk compression (HD,SSD) please? (may have to scroll up)
The first link is particularly dreamy, but maybe head a little too far in the clouds.
The third link has this sexy semi-log graph (logarithmic scale!).
Quote (with notes):
Using highly compressable data (IOmeter), you get at most a 30x
performance increase [for reads], and at least a 49x performance DECREASE [for writes].
Assuming I interpreted and clarified that sentence correctly, this single user's benchmark has me incredibly interested. Although write performance tanks wretchedly, read performance still soars. It gave me an idea.
Idea: VirtualStore
It so happens that thanks to sanity saving security features introduced in Windows Vista, write access to certain folders such as Program Files is virtualized for non-administrator processes.
Which means, in normal (non-elevated) usage, a program or game's attempt to write data to its install location in Program Files (which is perhaps a poor location) is redirected to %UserProfile%\AppData\Local\VirtualStore, somewhere entirely different.
Thus, to my understanding, writes to Program Files should primarily only occur when installing an application. This makes compressing it not only a huge source of space gain, but also a potential candidate for performance gain.
Testing
The beginning of this post has me a bit timid, it suggests benchmarking NTFS compression on a whole drive is difficult because turning it off "doesn't decompress the objects". However it seems to me the compact command is perfectly capable of doing so for both drives and individual folders. Could it be only marking them for decompression the next time the OS reads from them? I need to find the answer before I begin my own testing.