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

时间:2010-02-22 07:18:51

标签: .net com vb6 recordset vb6-migration

我正在将遗留的VB6应用程序迁移到.Net,但由于它是一个备受瞩目的关键业务应用程序,它正在逐步完成。

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

有问题的方法操纵ADODB记录集。是否存在我应该注意或考虑的性能问题,因为这些记录集将通过COM互操作传递给VB6和从VB6传递?

2 个答案:

答案 0 :(得分:2)

我没有做过任何具体的事情,但根据我对Interop的经验,.NET已经过很好的优化,通常每次互操作调用Win API或COM只会引入毫秒级的开销,这是可以忽略不计的。 ADO Recordset将被视为与在非托管堆上创建的任何其他COM对象相同,并且它们处理的是IntPtr地址。

Native .NET框架库及其垃圾收集器远远优于VB中的avaialble。我相信在.NET中重写一些旧的VB代码可能会给你一些性能提升或者至少足以忽略互操作开销。如果你装备了一个分析器工具并且在逐个迁移实现时不断监视性能,那么最好。

答案 1 :(得分:1)

不幸的是,我非常怀疑任何人都能够向您提供有关您尚未了解的情况的任何信息。你提到你要将记录集传递给VB6和从VB6传递记录集,我只能假设你在.Net中使用旧学校的ADO COM对象。

伊克。

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