主にC#(サービス、マルチスレッドなど)で書かれた大きなプロジェクトがあります。しかし、コア数のクランチアルゴリズムは、高速(OpenMPなど)にするためにアンマネージC++で書かれています。アンマネージC++コードのC#プロパティを使用
現時点では、これらの2つの世界の間でデータを交換するために多くの努力をしなければなりません。つまり、各C++クラスのラッパークラスをC++/CLIで記述する必要があります。 C#の "世界"に必要な設定(プロパティ)のためには、C++の世界(ヘッダファイル)にコピーがあり、ラッパークラスで明示的に変換が行われます。このアーキテクチャは非常に非効率的で、かなりエラーを起こしやすいようです。
プライマリ質問: アンマネージC++で何とか自動的にプロパティを持つC#の-classを共有することがある方法は何ですか?
2次質問: 上記のようなケースでアーキテクチャを改善する方法のアドバイスはありますか?私たちの考えの1つは、C++に完全に切り替えることでしたが、適切なライブラリを見つけて、現時点で.NETで行うすべての(システム)のためのきれいなコードを書く必要がありません。私は私の主なタスクは、特定の高perfromance、低遅延のDLLに管理するインターフェースを記述することである私の仕事で同様の問題を扱っています
あなたの助けに感謝し、よろしく、 ヤコブ
C#でアルゴリズムを書くのがボトルネックであることを確認しましたか? C#4.0は、並列開発のための優れたサポートを提供しています。 – Nick
いいえ、私たちはこれをまだやっておらず、あなたは正しいです:この点について確かめてみるべきです。しかし、私たちがメモリキャッシングなどの特定の特性に頼っているので、アルゴリズムがCLRで同様の速度で実行されることは本当に疑問です。 –
[プロトコルバッファ](http://code.google.com/p/protobuf/)はどうですか? [protobuf-net](http://code.google.com/p/protobuf-net/)を使用してC#と一緒に使用する機能があります。 – megabyte1024