zoukankan      html  css  js  c++  java
  • 2018-8-29-dotnet-core-2.1-使用阶梯编译

    title author date CreateTime categories
    dotnet core 2.1 使用阶梯编译
    lindexi
    2018-08-29 08:49:12 +0800
    2018-8-4 14:44:4 +0800
    dotnetcore

    在 dotnet core 2.1 可以使用阶梯编译的方法,从 dotnet framework 开始,在代码的所有方法在第一次进入的时候就需要使用 JIT 进行编译为本机的代码。可以看到代码是在第一次访问时编译的,所以编译的速度就影响了软件的运行速度。 在 dotnet core 2.1 使用的阶梯编译就是为了解决软件启动的问题

    什么是阶梯编译

    在软件启动的过程,可以认为几乎所有的方法都需要进行编译,在 Roslyn 有不同的方式编译,一个是快速编译,使用快速编译的方式会让代码运行速度比较慢。而另一个方式是优化编译,这个编译方式的编译速度比较慢,但是代码运行比较快。

    现在在 dotnet core 2.1 就可以使用阶梯编译,在第一次遇到一个函数时就进行快速编译,而之后发现这个方法会频繁访问,就在另一个线程对这个方法进行优化编译,在编译完成再替换原来的入口。这样就可以做到在软件启动的过程使用的是快速编译的方法,通过快速编译的方法提高软件启动的速度,而在方法频繁访问的时候再重新使用优化编译,提高代码运行速度

    如何打开

    最简单的方法是在项目文件添加属性,当然要求先升级一下 dotnet core 2.1 的 sdk 可以到 dotnet sdk 2.1.300 winx64-CSDN下载

    打开 xx.csproj 这里的 xx 就是项目的文件,当然如果看到这个博客,相信大家也知道这是哪个文件。

    在这个文件的 PropertyGroup 添加 <TieredCompilation>true</TieredCompilation> 就可以打开,请看下面代码,如果看不到代码,请点击.NET Core Project File with Tiered Compilation Enabled

    <script src="https://gist.github.com/richlander/53a3c5f0505433b45c83c98db74c5e03.js"></script>

    因为这个编译是在软件运行的时候使用 JIT 编译的,所以即使软件已经生成也可以通过configProperties打开,请看例子

      {
    +      "runtimeOptions": 
    +      {
    +        "configProperties": 
    +        {
    +          "System.Runtime.TieredCompilation": true
    +        }
    +      },
          "framework": 
          {
            ...
          }
        }

    如果不想修改文件可以添加环境变量COMPlus_TieredCompilation=1打开,具体请看tiered compilation demo

    Tiered Compilation Preview in .NET Core 2.1

  • 相关阅读:
    周总结14
    周总结13
    周总结12
    周总结11
    周总结10
    Pytorch实现GCN、GraphSAGE、GAT
    pytorch在损失函数中为权重添加L1正则化
    conda安装虚拟环境或者软件包时一直报错
    各种报错
    Pytorch-torchtext的使用
  • 原文地址:https://www.cnblogs.com/lindexi/p/12086366.html
Copyright © 2011-2022 走看看