19 июля 2015

Как я программу на RAM-диске собирал.


В Linux создать и примонтировать RAM-диск можно чуть ли ни одной командой, а вот в Windows таких стандартных средств я не нашел. Или плохо искал, или их нет совсем. В один прекрасный день захотелось ощутить мощь и быстроту диска в оперативной памяти, использовав его для компиляции Miranda NG.


Для создания дисков и монтирования образов программ вагон платных и бесплатных, а подключать VHD-образы можно даже без посторонних программ. Я воспользовался бесплатной программой ImDisk Virtual Disk Driver. Интерфейс у нее простой:



Диск создаётся вот таким образом:



Указывается только буква диска, его размер и опция для размещения в физической памяти. Без указания последней опции диск может перекочевать в файл подкачки.
Для полной сборки Miranda NG 4 гигабайта вполне хватит.
После нажатия кнопки "ОК" появится системный запрос на форматирование диска. Я выбрал размер кластера 4 килобайта и файловую систему NTFS.

А вот теперь начинается самое интересное. Такой виртуальный диск не получится взять и примонтировать в папку, как обычный диск, потому что он не отображается ни в диспетчере дисков, ни в выводе mountvol, но можно пойти на хитрость. Если нельзя смонтировать весь диск, то можно сделать ссылку на папку на этом диске. На счет старый версий не уверен, но в Windows 8 точно есть команда mklink для создания разного рода ссылок на разделах с файловой системой NTFS. Я создал на диске одну единственную папку "build". Ссылка на папку создаётся примерно такой командой:

mklink /d d:\src\miranda\bin10\Release f:\build

В папке появится ссылка "Release", но программы её будут воспринимать как обычную папку.

Всё, теперь можно приступать к сборке.

Субъективно программа собралась быстрее, чем при использовании жесткого диска.

И напоследок я попробовал дефрагментировать диск с помощью Auslogics DiskDefrag. Справился дефрагментатор со своей задачей за секунды.