补漏.NET8 NativeAOT

时间:11/25/2023 18:36:56   作者:ChenReal    阅读:57

忽然发现,上一篇实战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-test-1.png

  • 应用平均启动时间:51ms
  • 应用平均执行时间:278ms

2、.NET应用

aot-test-2.png

  • 应用平均启动时间:69ms
  • 应用平均执行时间:385ms

五、总结

我的测试方法虽然比较粗糙,但是反映了相对客观的结论:在应用执行速度上的测试,很明显AOT都具有明显的优势。 我们不妨列个表格,直观的比对一下吧。

对比指标 .NET应用 AOT应用 提升%
启动速度 69ms 51ms +26%
执行速度 385ms 278ms +28%

 

评论
0/200