.NET Core 5.0
待望の.NET Core 5.0のRC.1がついにリリースされました。
このバージョンから、ついにGAです。
そして、ついに。publishでの「圧縮ファイルを展開する」という望まない動作を脱却し、直接アセンブリを展開することができるようになりました。
長かったですね。
前回の記事から一年越しです。
ただし、今回も少しだけ制限事項があります。
Linux環境だとほとんど問題無いのですが、Windows環境だと、展開されるファイルが6ファイルほどあるのです。
デバッグが行えなくなるとの事で、仕方ないとは言え残念な点。
そこで、折衷案のようなビルドオプションが生えました。
IncludeNativeLibrariesInSingleFile
もとい、IncludeNativeLibrariesForSelfExtract
(最初どうにも適用されないなと思っていたら、githubのissueで、IncludeNativeLibrariesForSelfExtractに変えたとのこと)
実際に IncludeNativeLibrariesForSelfExtract を足せば、pdbファイルとexeファイルの2ファイルのみになりました。
まぁ、仕方ないか、という割り切りが必要そうです。
また、Trimのモードに、今まで通りのCopyUsedと、もっとアグレッシブにTrimするLinkが増えました。
両方比較しています。
で、今回もざっくりベンチマーク取ってみました。
テスト内容は前回の記事をご確認ください。
CopyUsedの結果
各計測結果
ビルド時間
ビルド時間 | オプションなし | Trimmed | ReadyToRun | Trimmed+ReadyToRun |
---|---|---|---|---|
オプションなし | 2474 | 5352 (216.3%) | 2712 (109.6%) | 9076 (366.8%) |
PublishSingleFile | 2720 (-) (109.9%) | 5461 (216.3%) (220.7%) | 2960 (109.6%) (119.6%) | 9397 (366.8%) (379.8%) |
ファイル数
ファイル数 | オプションなし | Trimmed | ReadyToRun | Trimmed+ReadyToRun |
---|---|---|---|---|
オプションなし | 225 | 72 | 225 | 72 |
PublishSingleFile | 6 | 6 | 6 | 6 |
総ファイルサイズ
総ファイルサイズ | オプションなし | Trimmed | ReadyToRun | Trimmed+ReadyToRun |
---|---|---|---|---|
オプションなし | 68,369,250 | 26,378,212 (38.5%) | 68,372,318 (100%) | 28,475,364 (41.6%) |
PublishSingleFile | 61,764,395 (-) (90.3%) | 19,764,941 (38.5%) (28.9%) | 61,767,471 (100%) (90.3%) | 21,862,101 (41.6%) (31.9%) |
初回実行時間
初回実行時間 | オプションなし | Trimmed | ReadyToRun | Trimmed+ReadyToRun |
---|---|---|---|---|
オプションなし | 587 | 483 (82.2%) | 646 (110%) | 519 (88.4%) |
PublishSingleFile | 2672 (-) (455.1%) | 3729 (82.2%) (635.2%) | 2202 (110%) (375.1%) | 1814 (88.4%) (309%) |
2回目実行時間
2回目実行時間 | オプションなし | Trimmed | ReadyToRun | Trimmed+ReadyToRun |
---|---|---|---|---|
オプションなし | 132 | 137 (103.7%) | 149 (112.8%) | 151 (114.3%) |
PublishSingleFile | 161 (-) (121.9%) | 171 (103.7%) (129.5%) | 218 (112.8%) (165.1%) | 138 (114.3%) (104.5%) |
2回目以降実行時間平均
2回目以降実行時間平均 | オプションなし | Trimmed | ReadyToRun | Trimmed+ReadyToRun |
---|---|---|---|---|
オプションなし | 144.75 | 136.25 (94.4%) | 172.75 (119.4%) | 135.5 (93.7%) |
PublishSingleFile | 163.5 (-) (113.1%) | 168.5 (94.4%) (116.6%) | 169 (119.4%) (117.3%) | 171.75 (93.7%) (118.7%) |
気づいた点
特筆すべきはPublishSingleFileをかけると、全体サイズが少し小さくなっていることでしょうか。
MS的にはPublishSingleFileで行きたいのでしょうか。
これからも注視していきたいですね。
備考のTrimMode=Link
各計測結果
ビルド時間
ビルド時間 | オプションなし | Trimmed | ReadyToRun | Trimmed+ReadyToRun |
---|---|---|---|---|
オプションなし | 3666 | 6717 (183.2%) | 2709 (73.8%) | 11889 (324.3%) |
PublishSingleFile | 2780 (-) (75.8%) | 7007 (183.2%) (191.1%) | 3120 (73.8%) (85.1%) | 11426 (324.3%) (311.6%) |
ファイル数
ファイル数 | オプションなし | Trimmed | ReadyToRun | Trimmed+ReadyToRun |
---|---|---|---|---|
オプションなし | 225 | 70 | 225 | 70 |
PublishSingleFile | 6 | 6 | 6 | 6 |
総ファイルサイズ
総ファイルサイズ | オプションなし | Trimmed | ReadyToRun | Trimmed+ReadyToRun |
---|---|---|---|---|
オプションなし | 68,369,250 | 17,755,226 (25.9%) | 68,372,318 (100%) | 20,989,530 (30.7%) |
PublishSingleFile | 61,764,395 (-) (90.3%) | 11,141,863 (25.9%) (16.2%) | 61,767,471 (100%) (90.3%) | 14,376,167 (30.7%) (21%) |
初回実行時間
初回実行時間 | オプションなし | Trimmed | ReadyToRun | Trimmed+ReadyToRun |
---|---|---|---|---|
オプションなし | 550 | 1487 (270.3%) | 540 (98.1%) | 5559 (1010.7%) |
PublishSingleFile | 2054 (-) (373.4%) | 1180 (270.3%) (214.5%) | 2088 (98.1%) (379.6%) | 1742 (1010.7%) (316.7%) |
2回目実行時間
2回目実行時間 | オプションなし | Trimmed | ReadyToRun | Trimmed+ReadyToRun |
---|---|---|---|---|
オプションなし | 173 | 182 (105.2%) | 147 (84.9%) | 133 (76.8%) |
PublishSingleFile | 126 (-) (72.8%) | 166 (105.2%) (95.9%) | 174 (84.9%) (100.5%) | 116 (76.8%) (67%) |
2回目以降実行時間平均
2回目以降実行時間平均 | オプションなし | Trimmed | ReadyToRun | Trimmed+ReadyToRun |
---|---|---|---|---|
オプションなし | 164.25 | 178.5 (108.5%) | 139.75 (84.7%) | 123.25 (75%) |
PublishSingleFile | 134.25 (-) (81.7%) | 165.75 (108.5%) (100.6%) | 148.75 (84.7%) (90.2%) | 120.5 (75%) (73.1%) |
こう見ると随分ファイルサイズ、頑張ってますね。
11MBであれば、結構いい線いくのでは無いでしょうか。
現状まだまだ実験的オプションな為、こちらはプロダクションで試すには相当テストと勇気が必要そうですけど。