代码之家  ›  专栏  ›  技术社区  ›  anivas

混合模式C++/CLI性能考虑-最佳实践

  •  1
  • anivas  · 技术社区  · 14 年前

    我有一个C++/CLI库,它调用许多本机C++方法。我已经阅读了许多线程,指出不应该混合使用托管代码和非托管代码。我找不到任何能说明如何避免这些开关以及为什么它会导致性能问题的东西。有人能分享最佳实践吗?

    1 回复  |  直到 14 年前
        1
  •  3
  •   Hans Passant    14 年前

    使用C++/CLI的唯一原因是它支持混合管理的和本机代码。如果一切都被管理,然后使用C**或VB,如果一切都是原生的,那么使用C或C++。或者任何你喜欢的语言。显然,避免混合是无稽之谈。

    从托管到非托管有少量开销。C++/CLI编译器自动生成一组机器代码,它在堆栈上推送“cookie”,旨在防止垃圾收集器误闯非托管堆栈帧,并将该框架上的指针错误地解释为被管理对象引用。成本约为7纳秒。