Performance 运行exe所涉及的步骤

Performance 运行exe所涉及的步骤,performance,Performance,问题: 当我们运行一个exe时(假设双击),在它真正开始执行之前,所有的时间都花在哪里 a) 将exe加载到内存中 b) ? c) ? 问题背景: 我正在分析应用程序(App.exe)的执行情况,并试图提高其性能。我有一个测试,它的功能如下: startTime=beginTimer() “启动App.exe” “等待窗口响应”-在此期间执行App.exe并启动窗口 endTime=endTimer() outputValue=结束时间-开始时间 我在App.exe中的不同位置添加了时间戳,以获

问题

当我们运行一个exe时(假设双击),在它真正开始执行之前,所有的时间都花在哪里

a) 将exe加载到内存中
b) ?
c) ?

问题背景

我正在分析应用程序(App.exe)的执行情况,并试图提高其性能。我有一个测试,它的功能如下:

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

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

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

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

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

  • 映射到内存
  • 加载链接共享库(DLL)及其链接共享库
  • 进程创建
  • 在主功能之前实例化/创建静态对象和其他东西
  • [可能正在加载资源,不知道Windows id是否正在这样做]
  • C/C++-主函数前的库方法
  • 启动主功能

  • 4和6可能结合在一起。

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

  • 从驱动器读取数据
  • 写入内存
  • 加载DLL和相关文件(从驱动器读取)
  • 写入内存
  • 创建进程并执行程序逻辑
  • 您可以做些什么来改进它:

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

    它是一个“普通的”.exe还是.Net程序?@Jayydee:它没有被病毒扫描@托克:这是一个普通的exe程序。值得一提的是,Windows不会一次将整个可执行文件加载到内存中,而是在必要时要求页面。如果您不熟悉内存映射,这一点并不明显:)