我正在将一个遗留的 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/