美文网首页
拾遗.NET8 NativeAOT(三)

拾遗.NET8 NativeAOT(三)

作者: ChenReal | 来源:发表于2023-11-26 09:27 被阅读0次

    忽然发现,上一篇实战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%

    相关文章

      网友评论

          本文标题:拾遗.NET8 NativeAOT(三)

          本文链接:https://www.haomeiwen.com/subject/wklowdtx.html