前段时间我的应用程序已经开始花费很长时间来显示主窗口。我在表单构造函数中放置了System.Diagnostics.Profiler
,如下所示:
Private m_profiler As New System.Diagnostics.Stopwatch
Public Sub New()
' This call is required by the designer.
m_profiler.Restart()
InitializeComponent()
m_profiler.Stop()
Rhino.RhinoApp.WriteLine("InitializeComponent() took {0}ms", m_profiler.ElapsedMilliseconds)
' Add any initialization after the InitializeComponent() call.
End Sub
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Rhino.RhinoApp.WriteLine("InitializeComponent() init took {0}ms", m_profiler.ElapsedMilliseconds)
Me.components = New System.ComponentModel.Container()
.....yada yada yada
结果是:
InitializeComponent() init took 2572ms
InitializeComponent() took 2837ms
所以几乎所有的时间都花在调用InitializeComponent()
方法上,我认为是因为jitting。我能做些什么来加速主表格的展示吗?
在没有任何控件的情况下显示表单是否有意义,将这些控件加载到后台线程中以便编译然后在UI线程上实例化新控件并将它们添加到表单中?
我能做些什么来找出真正占用的东西吗?
我的应用程序是一个纯.NET插件,用于显示.NET SDK的非托管C ++桌面应用程序。它目前在Windows 7上作为64位应用程序运行。