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

在.Net和COM程序集之间传递数据的性能,.net,com,vb6,recordset,vb6-migration,.net,Com,Vb6,Recordset,Vb6 Migration,我正在将一个遗留的VB6应用程序迁移到.Net,但由于它是一个备受关注的业务关键型应用程序,因此正在逐件进行迁移 为了提高性能,有一种方法在应用程序生命周期中被多次、数千次击中,我想在.Net(C#)中重写它,看看运行时是否可以改进 该方法处理ADODB记录集。由于这些记录集将通过COM interop与VB6之间传递,因此我是否应该注意或考虑任何性能问题?我没有对此做任何具体操作,但根据我在interop方面的经验,NET经过了很好的优化,通常每次互操作调用Win API或COM只会带来纳秒的

我正在将一个遗留的VB6应用程序迁移到.Net,但由于它是一个备受关注的业务关键型应用程序,因此正在逐件进行迁移

为了提高性能,有一种方法在应用程序生命周期中被多次、数千次击中,我想在.Net(C#)中重写它,看看运行时是否可以改进


该方法处理ADODB记录集。由于这些记录集将通过COM interop与VB6之间传递,因此我是否应该注意或考虑任何性能问题?

我没有对此做任何具体操作,但根据我在interop方面的经验,NET经过了很好的优化,通常每次互操作调用Win API或COM只会带来纳秒的开销,可以忽略不计。ADO记录集将被视为与在非托管堆上创建的任何其他COM对象相同,并且在后台是它们处理的IntPtr地址


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

关于互操作速度的第一段+1。我对在.NET中重写VB6组件所能获得的任何总体性能提升都持怀疑态度。在某些特定情况下,可能会有特定的性能提升。这种开销非常大,以至于微软已经写了几篇关于优化技术的文章。