В настоящее время мы находимся в процессе изменения большого количества кода при переходе от «единого системного» приложения к тому, которое может выполнять задачи на узлах распределенной обработки.Существующий код представляет собой смесь неуправляемого и теперь управляемого кода C ++, но также использует код C # для обеспечения интерфейса WCF между узлом и контроллером.
В результате этого перемещения общий шаблон кода I 'Видение, которое, вероятно, останется в обозримом будущем, представляет собой базовое преобразование значений целочисленного идентификатора из массива MFC в управляемый список для включения сериализации через WCF.Текущий шаблон:
List<int>^ fixtures = gcnew List<int>(aFixtureIds.GetCount());
for(int i = 0; i < aFixtureIds.GetCount(); i++) //aFixtureIds is of MFC type CArray<int,int>
{
fixtures->Add(aFixtureIds[i]);
}
Мы также используем нечто подобное в обратном порядке, где, если возвращается список, мы можем преобразовать его в CIntArray для вызывающей функции, выполняя итерацию по нему в цикле и вызывая Add.
Я понимаю, что вышеприведенное выглядит не очень интенсивно, но его часто вызывают - есть ли лучший шаблон для выполнения этого базового преобразования List <-> CArray, который бы занимал меньше времени на обработку?Это тот код, который может быть эффективно оптимизирован компилятором (я подозреваю, что нет, но хочу быть исправленным)?Размеры списков различаются, но обычно они составляют от 1 до десятков тысяч элементов, возможно, больше.