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

标签 .net com vb6 recordset vb6-migration

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

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

有问题的方法操纵 ADODB 记录集。由于这些记录集将通过 COM 互操作传入和传出 VB6,是否有任何我应该注意或考虑的性能问题?

最佳答案

我没有对此做任何具体的事情,但根据我使用 Interop 的经验,.NET 得到了很好的优化,通常每次对 Win API 或 COM 的互操作调用只会引入微不足道的纳秒级开销。 ADO Recordset 将被视为与在非托管堆上创建的任何其他 COM 对象相同,并且在幕后是它们处理的 IntPtr 地址。

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

关于.net - 在 .Net 和 COM 程序集之间传递数据的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2309383/

相关文章:

vba - 如何在 Crystal Report XI 中除最后一页之外的所有页面末尾继续打印?

c# - HttpWebRequest 中的 "Unable to connect to remote server fail"

c# - VB6 中的 DotNet COM,没有强名称

vb6 - 用于 VB6 应用程序中的类库的 RegAsm

c++ - 在 VB6 中获取堆栈跟踪

c# - STA 中的 Akka.net 参与者

c# - 我可以使用具有两个不同母版页的相同内容页吗?

c# - UserPrincipal.Save() 导致 ObjectDisposedException

.net - 使用C#中的任务并行库,每个处理器运行一个并行任务

c++ - 如何消除 RICHEDIT 控件的 MessageBeep?