読者です 読者をやめる 読者になる 読者になる

亀岡的プログラマ日記

京都のベッドタウン、亀岡よりだらだらとお送りいたします。

C++経由でdelegate呼んだ場合の速度低下

やっぱこういうのを作ると速度が気になるものですよね。

というわけで、実験。機能のコードの続きです。

            var sw = new Stopwatch();
            sw.Restart();

            for (int i = 0; i < 10000; i++)
            {
                fp(4, 8);
            }

            sw.Stop();
            Debug.WriteLine(sw.ElapsedTicks);

            sw.Restart();
            for (int i = 0; i < 10000; i++)
            {
                var x = wrapper.CallFunction(4, 8);
            }
            sw.Stop();
            Debug.WriteLine(sw.ElapsedTicks);
結果

4059
58441

というわけで、ほぼ10倍遅くなります、マーシャリング経由。
思ったより遅いですね・・・。やっぱ暗黙的に色々しているのでしょうか。。ううむ。