【发布时间】:2009-07-01 05:43:10
【问题描述】:
我正在尝试加快 C# 程序的加载部分。目前加载大约需要 15 秒。 乍一看,加载部分所做的事情包括构建许多 3rd Party UI 组件、加载布局文件、xml、DLL、资源文件、反射、等待 WndProc...等。
我使用了一些非常简单的方法来查看某个部分所花费的时间, 即在 double 处断点,它保存 TimeSpan 的总毫秒数,这是开始时 DateTime.Now 和结束时 DateTime.Now 的差。 尝试几次会给我类似的东西, 11s 13s 12s 12s 7s 11s 12s 11s 7s 13s 7s..(通常是 12s,但有时是 7s)
如果我添加 SuspendLayout,BeginUpdate 就像地狱一样;在反射中调用事物一次而不是多次;减少一些冗余的冗余计算冗余。时间是 3s 4s 3s 4s 3s 10s 4s 4s 3s 4s 10s 3s 10s....(通常是 4s,但有时是 10s)
在这两种情况下,时间并不一致,更像是双峰分布?这真的让我不确定我对代码的更正是否真的让它更快。 所以我想知道什么会导致这样的结果。 调试模式? “C# 必须在第一次运行时编译/解释代码,但接下来的时间会更快”的事情? WndProc 消息的等待? 反思?财产信息?反射。组装? 加载文件? XML?动态链接库?资源文件? 用户界面布局? (那部分肯定没有互联网/网络/数据库访问)
谢谢。
【问题讨论】:
标签: c#