Сможет ли использование фабричных методов в .NET COM Interop повысить производительность? - PullRequest
0 голосов
/ 25 июня 2010

Я работаю над приложением VB6, которое использует объекты .NET через COM Interop.Приложение работает хорошо, но я чувствую, что испытываю снижение производительности каждый раз, когда создаю экземпляр объекта .NET из VB6.

Например, у меня есть код VB6, который перебирает набор записей и создает новые.NET объекты для каждого элемента в наборе записей и добавления его в массив (CartItem и DiscountEngine оба являются объектами .NET):

  Set lCartItemClass = New CartItem
  Set lCartItem = lCartItemClass
  lCartItem.SKU = .Fields("SKU").Value
  lCartItem.Quantity = .Fields("Quantity").Value
  Set lCartItemsClass(i) = lCartItem

  '...   '

  mCartClass.CartItems = lCartItemsClass
  Set mDiscountEngine.Cart = mCartClass

Я бы нашел выигрыш в производительности, добавив метод фабрикичто принимает параметры, которые я хочу для моих свойств и обрабатывает создание объектов на стороне .NET выполнения?Поэтому вместо приведенного выше кода у меня будет что-то вроде:

  mDiscountEngine.Cart.AddCartItem( .Fields("SKU").Value, _
      .Fields("Quantity").Value)

1 Ответ

1 голос
/ 25 июня 2010

Звонить через интероператор всегда будет дорого.Я не думаю, что решение, которое вы описываете, улучшит производительность.Лучше всего было бы перебрать набор записей в vb6, добавив каждое свойство в массив, например, ary_SKU (), ary_Quantity () и т. Д. Затем, когда закончите, передайте массивы как параметры в .Net и снова переберите массивы со стороны .netсоздать классы из данных в массивах

...