使用C#性能我們有一個大的項目主要是寫在C#(服務,多線程等)。但是,核心數字運算算法是用非託管C++寫成的(OpenMP等)。在非託管C++代碼
不幸的是,目前我們要做很多的努力來交換這兩個世界之間的數據。也就是說,我們必須爲每個C++類在C++/CLI中編寫包裝類。對於(幾乎)在C# - 「world」中的任何必需設置(屬性),C++世界中存在一個副本(頭文件),並在包裝類中來回顯式轉換。這種體系結構看起來非常低效且相當容易出錯。
主要問題: 有沒有辦法在非託管C++中以某種方式自動共享C#類的屬性? (我們必須讀寫!)
第二個問題: 您是否可以就上述情況提供如何改善架構的建議。我們的一個考慮是完全切換到C++,但必須找到合適的庫併爲我們在.NET中執行的所有(系統)事情編寫乾淨的代碼,這一點感覺不好。
您的幫助和問候, 雅各布非常感謝
您是否已經驗證,在C#編寫的算法是一個瓶頸? C#4.0現在對並行開發有很好的支持。 – Nick 2012-04-04 13:25:43
不,我們還沒有這樣做,你說得對:我們應該嘗試確保這一點。但是由於我們依賴於內存緩存等特殊屬性,我真的懷疑算法會在CLR中以相似的速度運行。 – 2012-04-04 13:32:31
[Protocol Buffers](http://code.google.com/p/protobuf/)怎麼樣?有能力與c#一起使用[protobuf-net](http://code.google.com/p/protobuf-net/)。 – megabyte1024 2012-04-04 13:35:04