.NET Framework 4.5以上版本支持使用多核JIT,通过多核JIT并行编译可以减少程序的启动时间,平均提速大约10%~50%,WPF应用程序只需要在App.xaml.cs中构造函数加入以下内容:
java
public App(){CreateProfileOptimization();}private static void CreateProfileOptimization(){try{string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "MyApp");Directory.CreateDirectory(path);// 设置JIT profile文件存储的目录ProfileOptimization.SetProfileRoot(path);// 通过加载指定的profile文件来使能多核JITProfileOptimization.StartProfile("startup.profile");}catch (UnauthorizedAccessException){}catch (IOException){}}
其中MyApp可以替换成你的应用的名称,生成的加速文件存储在C:\Users\用户名\AppData\Local\MyApp。
WinForm应用程序在Program.cs文件中添加以下内容启动多核JIT:
java
/// <summary>/// 应用程序的主入口点。/// </summary>[STAThread]static void Main(){CreateProfileOptimization();Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(new Form1());}private static void CreateProfileOptimization(){try{string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "MyApp");Directory.CreateDirectory(path);// 设置JIT profile文件存储的目录ProfileOptimization.SetProfileRoot(path);// 通过加载指定的profile文件来使能多核JITProfileOptimization.StartProfile("startup.profile");}catch (UnauthorizedAccessException){}catch (IOException){}}
第一次启动时,JIT编译器会记录需要编译的所有函数,CLR会保存已执行的函数的profile文件,第一次执行程序并不会降低启动时间,当第二次运行程序时,通过调用ProfileOptimization.StartProfile加载profile文件获取需要编译的函数信息来加速编译过程。
注:首次运行程序会记录函数信息,不会提升程序启动速度,当第二次运行时,才会提升程序的启动速度。