athome-developer’s blog

不動産情報サービスのアットホームの開発者が発信するブログ

.NET Coreのパフォーマンスが気になる件

こんにちは! 情報システム部の高野です。
.NET Coreは、WindowsLinuxMacで動く新しい.NETの環境です。
気になっているのは、Webアプリケーションを動かすならWindowsLinuxどちらが速いのかってことです。
折角、マルチプラットフォームに対応したのでより良い環境で動かしたいですからね
(まあ速いってのは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

ちゃんと速くなってる!(当たり前ですね)


次回は、本題のASP.NET Coreの検証を実施してみたいと思います。