忽然发现,上一篇实战NativeAOT的文章中漏了一个很重要的测试指标——执行速度。
Terribly Sorry!!!我现在赶紧补上~~
一、测试代码
在Program.cs代码入口方法头尾,各自增加一行时间输出的代码。时间必须是有毫秒的输出。例如:
static void Main(string[] args){
Console.WriteLine($"App Started At:{DateTime.Now.ToString("HH:mm:ss.fff")}");
...
Console.WriteLine($"App `Finished` At:{DateTime.Now.ToString("HH:mm:ss.fff")}");
}
二、测试应用样本
将VuePacker应用分别发布两个版本:
- 一个用NativeAOT编译的,放在目录vuepacker-aot里面。
- 另外一个编译为普通的.NET控制台应用,放在目录vuepacker-dotnet里面。
三、测试脚本
分别准备两个启动应用的测试脚本,在执行应用启动命令之前输出一个时间,用于测试应用的启动时间。
1、AOT应用
@echo off
set ROOT_PATH=D:\develop\rmblog
echo Script Started:%TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2%.%TIME:~9,2%0
vuepacker-aot\VuePacker.exe --src %ROOT_PATH%\UI\views --dist %ROOT_PATH%\bin\views --config %ROOT_PATH%\UI\tools\appsettings.json --uglify
2、.NET应用
@echo off
set ROOT_PATH=D:\develop\rmblog
echo Script Started:%TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2%.%TIME:~9,2%0
vuepacker-dotnet\VuePacker.exe --src %ROOT_PATH%\UI\views --dist %ROOT_PATH%\bin\views --config %ROOT_PATH%\UI\tools\appsettings.json --uglify
四、测试结果
上面的两个脚本,各自执行了三次。结果如下:
1、AOT应用
AOT应用
- 应用平均启动时间:51ms
- 应用平均执行时间:278ms
2、.NET应用
.NET应用
- 应用平均启动时间:69ms
- 应用平均执行时间:385ms
五、总结
我的测试方法虽然比较粗糙,但是反映了相对客观的结论:在应用执行速度上的测试,很明显AOT都具有明显的优势。
我们不妨列个表格,直观的比对一下吧。
对比指标 | .NET应用 | AOT应用 | 提升% |
---|---|---|---|
启动速度 | 69ms | 51ms | +26% |
执行速度 | 385ms | 278ms | +28% |
网友评论