使用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