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

在.NET和COM程序集之间传递数据的性能

  •  3
  • benPearce  · 技术社区  · 15 年前

    我正在将旧的vb6应用程序迁移到.NET的过程中,但是由于它是一个引人注目的业务关键型应用程序,因此它正在一个接一个地进行。

    为了提高性能,有一种方法在应用程序生命周期中受到了无数次的冲击,我想在.NET(C)中重写它,看看运行时是否可以得到改进。

    所讨论的方法处理ADODB记录集。由于这些记录集将通过COM互操作从vb6传递到vb6,我是否应该注意或考虑到任何性能问题?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Fadrian Sudaman    15 年前

    我没有做过任何具体的工作,但是根据我对interop的经验,.net是非常好的优化,并且通常每次调用interop来赢得api或com都只会带来纳秒级的开销,这是可以忽略的。ADO记录集将被视为与在非托管堆上创建的任何其他COM对象相同,并且在hood下是它们处理的intptr地址。

    原生.NET框架库及其垃圾收集器远优于VB中可用的库。我相信在.NET中重写一些旧的VB代码可能会给您带来一些性能提升,至少足以忽略互操作开销。最好的情况是,当您一件一件地迁移实现时,为自己配备一个探查器工具并持续监控性能。

        2
  •  1
  •   Spencer Ruport    15 年前

    不幸的是,我非常怀疑任何人都能向你提供任何你还不知道的关于你处境的信息。您提到过,您正在向vb6传递记录集和从vb6传递记录集,我只能假设这意味着您正在使用.NET中的老式ADO COM对象。

    艾克。

    所以假设没有其他方法,我只能得出结论,我不知道你遇到了什么样的技术障碍,会迫使你犯下这样的暴行。我只能祝你好运。