Шаги, участвующие в запуске exe - PullRequest
2 голосов
/ 30 августа 2010

Вопрос :

Когда мы запускаем exe (предположим, двойным щелчком), где все время тратится до того, как оно действительно начнет выполняться?

а) Загрузка exe в память
б)?
в)?

Предпосылки вопроса :

Я профилирую выполнение приложения (App.exe) и пытаюсь улучшить его производительность.У меня есть тест, который делает что-то вроде:

startTime = beginTimer ()
"start App.exe"
"ждать, пока окно не станет отзывчивым" - App.exe выполняется в течение этого времени и запускаетокно
endTime = endTimer ()
outputValue = endTime - startTime

Я добавил метки времени в разных местах в App.exe для получения времени выполнения, потраченного на разных фазах, а также для полученияОбщее время выполнения App.exe.

Я заметил, что «outputValue» составляет около 5 секунд, где общее время, затраченное на выполнение App.exe (полученное из меток времени в exe), составляет около 2сек.

Мне кажется, что около 3 секунд уже было потрачено, прежде чем App.exe даже фактически начал работать.Размер исполняемого файла составляет около 2700 КБ.

Ответы [ 2 ]

1 голос
/ 30 августа 2010

Так и должно быть (только догадка, курс по операционным системам уже давно)

  1. Отображение в память
  2. Загрузка связанных общих библиотек (DLL) и связанных с ними общих библиотек
  3. Создание процесса
  4. Создание / создание статических объектов и других вещей перед main-Function
  5. [возможно, загрузка Ressources, не знаю, делает ли это Windows id]
  6. C / C ++ - Библиотечные методы перед main-Funktion
  7. запуск main-Function.

4 и 6 могут объединяться.

0 голосов
/ 30 августа 2010

Приложение может быть небольшого размера, но, возможно, оно ссылается на множество библиотек.

  1. чтение с диска
  2. запись в память
  3. загрузка dll и связанных файлов (чтение с диска)
  4. запись в память
  5. создает процесс и выполняет логику программы

Что вы можете сделать, чтобы улучшить его:

  • в программе запуска удалить все включенные файлы, которые не используются
  • убедитесь, что программа скомпилирована без отладочной информации. В Visual Studio это «Release», а не «Debug». Улучшит производительность и уменьшит размер исполняемого файла
  • если проект читает базу данных и / или файл при запуске, скорее всего, именно в этом проблема
  • это приложение .NET, убедитесь, что оно работает на последней версии .NET Framework
...