运行exe的步骤

时间:2010-08-30 11:52:38

标签: performance

问题

当我们运行一个exe(假设通过双击),所有的时间都花在实际开始执行之前?

a)将exe加载到存储器上 b)?
C) ?

问题背景

我正在分析应用程序(App.exe)的执行并尝试提高其性能。我有一个类似的测试:

startTime = beginTimer()
“启动App.exe”
“等到窗口响应” - App.exe在此期间执行并启动窗口
endTime = endTimer()
outputValue = endTime - startTime

我在App.exe的不同位置添加了时间戳,以获取在不同阶段花费的执行时间,并获取App.exe的总执行时间。

我注意到“outputValue”大约是5秒,其中执行App.exe所花费的总时间(从exe中的时间戳获得)大约是2秒。

在我看来,在App.exe实际开始执行之前已经花了大约3秒钟。 exe的大小约为2700 KB。

2 个答案:

答案 0 :(得分:1)

应该是这样的(只是猜测,操作系统课程是不久前的)

  1. 映射到内存
  2. 加载链接共享库(DLL)及其链接的共享库
  3. 流程创建
  4. 在main-Function
  5. 之前实例化/创建静态对象和其他内容
  6. [也许加载Ressources,不知道Windows id是否这样做]
  7. C / C ++ - main-Funktion之前的图书馆方法
  8. 启动main-Function。
  9. 4和6可能会在一起。

答案 1 :(得分:0)

应用程序可能很小,但它可能引用了很多库。

  1. 从驱动器阅读
  2. 写入记忆
  3. 加载dll和相关文件(从驱动器读取)
  4. 写入记忆
  5. 创建流程并执行程序逻辑
  6. 你可以采取哪些措施来改善它:

    • 在启动程序中,删除所有未使用的包含
    • 确保编译程序时没有调试信息。在Visual Studio中,它是“Release”而不是“Debug”。将提高性能并减少可执行文件大小
    • 如果项目在启动时读取数据库和/或文件,很可能就是问题所在
    • 这是一个.NET应用程序,确保它在最新的.NET Framework上运行