我有一个调用许多本机C++方法的C++/CLI库。我读过很多关于你不应该混用托管和非托管代码的帖子。我找不到任何说明如何避免这些开关以及为什么它会导致性能问题的说明。有没有人可以分享最佳实践。
发布于 2010-10-24 18:39:58
使用C++/CLI的唯一原因是它支持混合使用托管代码和本机代码。如果一切都是托管的,那么使用C#或VB,如果一切都是本机的,那么使用C或C++。或者任何你喜欢的语言。显然,避免混合是毫无意义的。
从托管到非托管有少量的开销。C++/CLI编译器会自动生成一些机器码,用于在堆栈上推送“cookie”,旨在防止垃圾回收器误入非托管堆栈帧,并将该帧上的指针错误解释为托管对象引用。大概需要7纳秒左右。
https://stackoverflow.com/questions/4007523
复制相似问题