こんにちは! 情報システム部の高野です。
.NET Coreは、Windows・Linux・Macで動く新しい.NETの環境です。
気になっているのは、Webアプリケーションを動かすならWindows・Linuxどちらが速いのかってことです。
折角、マルチプラットフォームに対応したのでより良い環境で動かしたいですからね
(まあ速いってのは1つの要素に過ぎないですけどね)
今回は、序章としてコンソールアプリケーションでパフォーマンスの確認をしてみたいと思います。
環境
Azure上にWindows2016 ServerとCentOS7.2を構築。
どちらもDS2_V2 Standard(CPU:2コア・メモリ:7GB)でSSDを選択。
※特に設定などは弄らずに素のままで検証してます。
.NET Coreのバージョンは1.0.1です。
検証用プログラム
適当に負荷が、かかれば良いのでかなり適当ですが
public static void Main(string[] args) { var a = Enumerable.Range(1, 10000); for(var i = 1; i <= 10000; i++) { var b = a.Where(x => x % i == 0).ToArray(); } }
検証結果
上記プログラムを10回実行した平均です。
Windows2016:1,204.4ms
CentOS7.2:1,125.5ms
まあ誤差の範囲ですね
でも何回かやってもCentOSの方が速かったです。
ちなみに自分のSurface Pro3で実行したら3秒以上かかりました。
(自分のPCの遅さが浮き彫りに!)
上記は、dotnet runコマンドで実行した結果なのですが、
これだとdebugモードで実行しているってことに気付いたので
dotnet run -c Release で実行してみた結果、こうなりました。
Windows2016:997.7ms
CentOS7.2:945.9ms
ちゃんと速くなってる!(当たり前ですね)