【问题标题】:How to measure program.exe startup time?如何测量program.exe启动时间?
【发布时间】:2013-04-08 12:12:10
【问题描述】:

我想测量我的程序exe启动时间吧 是从点击或 [enter] 的那一刻起的时间 如果从控制台或任何其他方式开始,直到 程序启动完成的那一刻, 它的代码可以在所有结构设置的情况下执行 (可能这意味着当 main() 中的第一个命令时 被执行 [?])

我想以编程方式测量它 在我的代码里面 - 所以我想办法做到这一点 需要读取确切的射击时间 然后程序减去这个时间 第一行代码执行时间

(对不起我的英语不好)怎么办?

【问题讨论】:

  • 如何在程序启动之前读取性能计数器及其main() 并将这两个值存储在某个文件中然后计算差异?
  • 程序启动前如何调用qpc(加载到内存)?
  • 用java重写——然后你可以使用秒表。

标签: c windows performance winapi performance-testing


【解决方案1】:

您想从单击或 [enter](包括 shell(cmd.exe 或 Windows Explorer)开销)还是从程序启动进行测量?

以编程方式,您只能从进程创建开始测量时间,因此不包括查找、读取和映射 .exe 文件或任何 DLL。时间将根据虚拟内存中已映射的内容而有所不同。它将包括 C RTL 的初始化,但仅此而已。

你能做的最好的可能是GetProcessTimes

问题在于,即使父进程也不一定要等待子进程初始化完成——它可以使用WaitForInputIdle,但如果您使用的是 Windows 资源管理器等标准工具,那么您就会坚持下去。如果不编写自己的代码,我看不到任何测量 shell 开销的方法。

【讨论】:

  • 如果我要编写自己的流程启动器?然后我可以显示 Run("Program.exe") 的确切时间,然后在 program.exe 的 main 中显示 main 进入的确切时间 - 这是否是衡量我的启动的确切方式(这很难看,因为我想得到它来自我设置的程序,而不是使用外部启动器,但如果没有好的方法,我想至少试试这个更糟糕的方法)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-17
  • 2017-02-26
  • 2020-05-11
相关资源
最近更新 更多