CompactGUI
CompactGUI — это графическая надстройка, Костыль и по совместительству спасательный круг для тех пользователей Windows, чья фобия перед черным экраном командной строки сравнима лишь с ужасом перед сообщением Not enough disk space. Утилита представляет собой красивую обёртку для встроенной, но тщательно скрываемой от глаз простых смертных системной функции compact.exe, позволяющей сжимать файлы на лету, не превращая их в бесполезные архивы, которые нужно распаковывать перед каждым запуском. По сути, это легальный способ скачать больше места на жестком диске, работающий за счет насилия над центральным процессором.
Суть[править]
В недрах Редмонда, когда разрабатывали Windows 10, инженеры столкнулись с проблемой: операционную систему нужно было запихнуть на дешевые планшеты с памятью объема, которого едва хватало на фотографию кота в высоком разрешении. Так родилась технология CompactOS и новые алгоритмы сжатия. Хитрость заключается в том, что файлы физически занимают меньше места, но система видит их как обычные. При обращении к файлу Драйвер файловой системы прозрачно распаковывает кусок данных в оперативную память, скармливает его приложению, и никто ничего не замечает. Кроме, возможно, вашего процессора, который начинает тихо материться, выполняя двойную работу.
CompactGUI берет эту технологию и делает её доступной для геймеров, чья папка Steam давно перевалила за терабайт из-за текстур в 4K, которые они даже не видят на своих TN-матрицах. Программа позволяет выбрать папку с игрой или софтом, нажать одну большую кнопку и наблюдать, как 100 гигабайт превращаются в 60, освобождая место для очередной инди-поделки из раннего доступа.
Внутренности[править]
Технически сабж написан на смеси C# и, прости господи, VB.NET, что само по себе является поводом для холиваров в среде программистов, однако конечного юзера это волнует мало, пока интерфейс отрисовывается через WPF и выглядит достаточно современно, чтобы не вызывать кровавые слезы. В основе работы лежит API WofUtil.dll и вызовы DeviceIoControl, которые программа дергает, чтобы заставить NTFS работать иначе.
Пользователю предлагается выбор из четырех стульев, то есть алгоритмов сжатия, каждый из которых представляет собой компромисс между жадностью до мегабайт и жалостью к процессору:
XPRESS4K и XPRESS8K — выбор джентльмена. Сжимают быстро, распаковываются еще быстрее, нагрузка на процессор минимальна. Именно их использует сама Windows для системных файлов. Идеально подходят, если у вас процессор времен покорения Крыма, а место освободить нужно.
XPRESS16K — золотая середина, которую обычно советуют всем подряд. Жмет сильнее, распаковывается бодро, но уже требует наличия в системе чего-то мощнее калькулятора.
LZX — тяжелая артиллерия. Алгоритм, изначально созданный для архивации кабинетов (CAB) и использовавшийся в Xbox. Сжимает так, что файлы начинают стонать, выжимая последние биты свободного пространства. Однако расплата за это — ощутимая нагрузка на CPU при распаковке. Использовать LZX на игре с открытым миром и постоянной подгрузкой ассетов на слабом процессоре — верный способ превратить Геймплей в пошаговую стратегию.
Я сжал свою папку с пор… учебными материалами алгоритмом LZX, и теперь компьютер греется, как ядерный реактор, но зато влезло еще два сезона! — довольный пользователь.
Эффективность[править]
Главный парадокс использования CompactGUI заключается в том, что на старых и медленных жестких дисках сжатие может увеличить производительность игр. Происходит это потому, что узким местом является скорость чтения с блинов диска. Сжатый файл весит меньше, считывается быстрее, а распаковка в оперативной памяти современным процессором занимает наносекунды. В итоге игра загружается быстрее, а юзер считает себя хакером, обманувшим систему.
С другой стороны, существуют файлы, которые сжимать бесполезно. Это уже сжатые форматы: видео, музыка, архивы и текстуры в определенных контейнерах. CompactGUI, в своих последних инкарнациях, научился анализировать содержимое и благородно пропускать файлы, которые не ужмутся даже под прессом, дабы не тратить время и ресурсы. Список таких расширений (вроде .mp4, .zip, .jpg) зашит в настройки, но особо одаренные могут его редактировать, пытаясь сжать WinRAR внутри WinRAR.
Проклятие обновлений[править]
Идиллию нарушают два всадника апокалипсиса. Первый — это обновления игр. Steam, видя, что файлы на диске отличаются от эталонных (или просто переписывая их при патче), часто приводит к тому, что игра раздувается обратно до исходных размеров. Для борьбы с этим в CompactGUI прикрутили фоновый Watcher — демона, который сидит в трее, следит за папками и, как только обнаруживает изменения, тут же бросается сжимать их обратно, пока компьютер простаивает. Это превращает ваш ПК в Вечный двигатель по перемалыванию данных.
Второй всадник пришел с Windows 11 и зовется DirectStorage. Эта технология позволяет видеокарте забирать данные напрямую с NVMe SSD, минуя процессор. Если же вы, умник, сжали файлы через CompactGUI, то процессору придется проснуться, перехватить данные, распаковать их и только потом отдать видеокарте. Весь смысл DirectStorage летит в трубу, а производительность падает на дно Марианской впадины. Программа научилась детектить такие игры и кидать в лицо пользователю предупреждения, но кто ж их читает?
База знаний[править]
Разработчики, понимая, что юзеры ленивы и не хотят экспериментировать, прикрутили интеграцию с онлайн-базой данных. Приложение может отправить анонимную телеметрию о том, насколько хорошо сжалась условная Cyberpunk 2077, и получить средние значения по больнице. Это позволяет заранее узнать, стоит ли овчинка выделки, или игра уже настолько оптимизирована (или забита несжимаемым мусором), что выиграть удастся лишь пару мегабайт.