やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

dotnet5.0.102で新しいプロジェクトを作成する

 できた。けど遅い。

情報源

結論

 dotnet 5 もやはり遅い。Hello worldを実行するまで72秒もかかった。

工程 所要時間
プロジェクト生成 21s
ビルド 31s
実行 20s

 「dotnet5はMONOを使うようになるから速くなる」っていってたのに。dotnet Core 3 はビルドに50秒かかっていたから速くはなった。でもMONOは10秒なんですが……。

ビルド 時間(秒)
MONO(csc) 10
.NET Core 3 50
.NET 5.0.102 30

前提

手順

  1. テンプレートを一覧する
  2. プロジェクトを作成する
  3. ビルドする
  4. 実行する

1. テンプレートを一覧する

dotnet new -l
Templates                                         Short Name          Language          Tags                  
--------------------------------------------      --------------      ------------      ----------------------
Console Application                               console             [C#], F#, VB      Common/Console        
Class library                                     classlib            [C#], F#, VB      Common/Library        
Worker Service                                    worker              [C#], F#          Common/Worker/Web     
Unit Test Project                                 mstest              [C#], F#, VB      Test/MSTest           
NUnit 3 Test Project                              nunit               [C#], F#, VB      Test/NUnit            
NUnit 3 Test Item                                 nunit-test          [C#], F#, VB      Test/NUnit            
xUnit Test Project                                xunit               [C#], F#, VB      Test/xUnit            
Razor Component                                   razorcomponent      [C#]              Web/ASP.NET           
Razor Page                                        page                [C#]              Web/ASP.NET           
MVC ViewImports                                   viewimports         [C#]              Web/ASP.NET           
MVC ViewStart                                     viewstart           [C#]              Web/ASP.NET           
Blazor Server App                                 blazorserver        [C#]              Web/Blazor            
Blazor WebAssembly App                            blazorwasm          [C#]              Web/Blazor/WebAssembly
ASP.NET Core Empty                                web                 [C#], F#          Web/Empty             
ASP.NET Core Web App (Model-View-Controller)      mvc                 [C#], F#          Web/MVC               
ASP.NET Core Web App                              webapp              [C#]              Web/MVC/Razor Pages   
ASP.NET Core with Angular                         angular             [C#]              Web/MVC/SPA           
ASP.NET Core with React.js                        react               [C#]              Web/MVC/SPA           
ASP.NET Core with React.js and Redux              reactredux          [C#]              Web/MVC/SPA           
Razor Class Library                               razorclasslib       [C#]              Web/Razor/Library     
ASP.NET Core Web API                              webapi              [C#], F#          Web/WebAPI            
ASP.NET Core gRPC Service                         grpc                [C#]              Web/gRPC              
dotnet gitignore file                             gitignore                             Config                
global.json file                                  globaljson                            Config                
NuGet Config                                      nugetconfig                           Config                
Dotnet local tool manifest file                   tool-manifest                         Config                
Web Config                                        webconfig                             Config                
Solution File                                     sln                                   Solution              
Protocol Buffer File                              proto                                 Web/gRPC              

 今回はconsoleを使う。

2. プロジェクトを作成する

 ルートディレクトリを作成する。

mkdir my_csharp_project
cd my_csharp_project

 生成する。21秒もかかった。

time dotnet new console
...
  /tmp/work/work.csproj を復元しました (645 ms)。
Restore succeeded.

real    0m21.000s
user    0m22.706s
sys 0m2.281s

3. ビルドする

 30秒かかった。

time dotnet new console
...
経過時間 00:00:25.45

real    0m31.391s
user    0m29.851s
sys 0m2.834s

4. 実行する

 20秒かかった。

time dotnet run
Hello World!

real    0m18.184s
user    0m21.211s
sys 0m2.498s

成果物

所感

 遅い。dotnet遅い。HelloWorldで72秒かかるって遅すぎ。

 やはりMONOのほうが遥かに早くて良い。dotnetはクソ。Microsoftはクソ。「dotnet5はMONOを使うようになるから速くなる」っていってたのに。

対象環境

$ uname -a
Linux raspberrypi 5.4.83-v7l+ #1379 SMP Mon Dec 14 13:11:54 GMT 2020 armv7l GNU/Linux