Длительное время холодного запуска - это чисто проблемы с жестким диском. Поиск DLL, которые нужны вашей программе. Вы не можете оптимизировать жесткий диск без использования инструмента дефрагментации. Сегментирование вашей программы так, что загрузка DLL перекрывает время пользовательского интерфейса, довольно сложно. Использование COM-серверов или опция компоновщика / DELAYLOAD являются очевидными подходами, но не так просто вывести функциональный интерфейс на экран, не касаясь чего-либо. Разделение классов на библиотеки DLL, которые запускаются с помощью панели инструментов или пунктов меню, конечно, возможно, но MFC не делает это простым с обновлением пользовательского интерфейса простоя (извините, забыл точную фразу).
Вы не одиноки, хорошими примерами программ, которые тоже сталкиваются с этой проблемой, являются Microsoft Office и Acrobat Reader. Они решают проблему очень неприлично, они устанавливают «оптимизатор» в ключе «Выполнить реестр» или ярлыке папки «Автозагрузка». Который ничего не делает, но касается всех библиотек DLL, чтобы они загружались в кэш файловой системы. Горячий старт EXE-файла после того, как пользователь проверил ее электронную почту. Я ненавижу их и продолжаю удалять их после того, как они вернули его обратно. Но это улучшает мнение пользователей, они думают, что это медленная программа чтения электронной почты. Или, конечно же, взорванная Windows-must-got-a-Mac.
Тем не менее, 30 секунд это чертовски долгое время. Удостоверьтесь, что это не проблема только на вашем компьютере разработчика, вызванная сборкой двоичных файлов снова и снова и распределением их по всему диску. Запустите Defraggler. Затем проверьте, что все это делает с помощью утилиты SysInternals ProcMon.