C# は JIT コンパイルが走って実行速度が落ちるので、
計算の肝の部分はやっぱり C/C++ で実行したい。
(というか秘伝のソースが C/C++ なのでこれを活用したいというのが本音)
そんなときは C/C++ で汎用 DLL を作って、
C# のほうでインポートしてやればいいです。
~2016/08/18 追記~~~
JIT コンパイルがどうのと書きましたが、そんなの関係ねぇですね。
C# は.NET Framework 上で動作するため、
メモリアクセスなどハードウェアに近い仕事が苦手です。
そこで C/C++ DLL を利用することで、
苦手なものを得意な人たちに任せることができるようになります。
また、シンプルに DLL を利用するメリットを享受できます。
つまり過去の資産を活用できたり、
複数のアプリケーションで同機能を共有できるので、
共通機能のメンテナンスコストだったり、
新規アプリケーションの設計コストだったりが削減できます。
~~~~~~~~~~~
DLL を作成するときの注意事項は次の 2 点。
- クラスではなく関数をエクスポートするようにする
- エクスポートする関数の呼び出し規約は __stdcall とする
詳細は次回以降で説明したいと思います。