Маппинг (в третий раз тебе пишу) - специальная фича, даруемая нам механизмом работы виртуальной памяти.
В виртуальнйо памяти вся память делится на страницы по 4кб (или по 4мб в
особых случаях). Страницы могут быть file-backed или swap-backed.
Если страница swap-backed, то она действительно находится в оперативной памяти, но, когда требуется - выгружается на жесткий диск в файл подкачки, и наоборот загружается, когда она нужна.
Если страница file-backed - то данные некогда не лежат в оперативной (физической) памяти, они находятся на жестком диске и при этом, когда происходит чтение/запись в file-backed страницу, в действительности, происходит чтение/запись данных с/на жесткий диск.
Маппинг файла - это создание региона file-backed страниц, ссылающихся на файл в файловой системе какого-либо диска.
...
Для того, чтобы исполняемый файл мог корректно работать, он должен быть загружен, т.е. должен быть произведён ряд мероприятий, которые создадут все необходимые условия для его работы. Одним из таких условий является помещение всех тех данных, которые необходимы приложению в память.
При этом образ файла (т.е. данные файла) не копируются в память, происходит просто маппинг (проецирование) образа программы на АП программы.
100 запущеных программ своим образом съедёт столько же оперативки, сколько 1, т.к. образ не помещается в оператику вообще оперативку.
...
Маппинги очень быстрые по своей природе, потому как этот механизм работает на очень низком уровне.
...
Провёл эксперемент - прогнал через цикл запуск и того, и другого варианта. В общем, да - медленней. И в общем, да - совсем не на много.
Странный эксперимент. Естественно - больший файл загружается медленнее. Но работает столь же быстро, как и аналогичный по коду мелкий файл.
А вот сам по себе запуск (даже совсем пустой программы), оказывается, действие довольно долгое.
Да. Если описывать, что при этом (при запуске пустой программы) происходит - 10 страниц не хватит.
Отсюда вопрос: если выделить присловутое "маленькое действие" не в программу, а в библиотеку, то:
Будет ли быстрее создать поздним связыванием объёкт из библиотеки, чем запускать ЕХЕ?
Глупость, двойная.
Во-первых, позднее связывание работает
значительно более медленно, чем ранее. Пожалуй, раз в десять медленнее.
Во-вторых, совершенно непонятно, что в результате выделения небольшого действия в DLL изменится в лучшую сторону.
Другое дело - выделить б
Ольшую часть программы в DLL и загружать только при необходимости. Вот жто чем-то поможет.