我们有一个中等大小的应用程序,它依赖于几个用户控件,即:
一个tablelayout面板,具有2x5个用户控件网格,具有3个以上的继承级别。我们正在使用我们的应用程序遇到的一个大问题已经证明是启动时间(冷/热),我们得到的一个重大问题就是初始化这个用户控制网格。
从我们的时间报告中,这个表格在初始化时大约需要0.75秒,而削减这个表格将是大不了的。
我的问题是:我能做些什么来加快这个速度?每当我对类似复杂度的InitializeComponents(所有窗口,.net控件)进行时序检查时,结果有时会小于(<10 milleseconds)。
编辑)我想知道标记我的最终课程密封或类似的东西是否会有所帮助。
edit2)我更深入地研究了initializecomponent的时间,对于我当前的机器,主容器为它添加了10个组件(每个10ms)。每个组件都添加了3个组件(每个组件10毫秒)。 10x10 + 30x10 = 700ms。除非我能提高物品加入容器的速度,否则我认为我是SOL。
答案 0 :(得分:1)
您是否正在做任何依赖于控件启动中的外部因素的事情,例如访问网络或从数据库中提取?这些可能会增加应用程序的加载时间。
检查是否有任何循环并尝试减少这些循环。
答案 1 :(得分:0)
它可能相关也可能不相关,但我使用TableLayoutPanel时遇到了类似的问题。问题是抽样时间,正如剖析器所揭示的那样。导致我们出现问题的组合是内部控件的透明度和动态调整大小。我玩了一些CreateParams选项,但不幸的是,我最终不得不创建一个自定义布局引擎,让它真正唱歌。
无论如何,我现在肯定会下载一个免费试用版的探查器。性能问题通常在意外的位置。您可以花费数小时优化您认为是罪魁祸首的地方,但只能获得0.0001ms的性能差异。