Сравнение скорости выполнения операций Merge и Append

Если нужно объединить множество слоев в один общий слой, то есть три варианта решения этой задачи:
— указать все слои как входные для инструмента Merge (Слияние) и вычислить итоговый слой
— последовательно добавить слои в итоговый слой с помощью инструмента Append (Добавление)
— добавить исходные слои в итоговый слой с помощью инструмента Append, но за одну операцию

Какой из этих методов быстрее? Забегая вперед можно сказать, что метод 3 почти эквивалентен методу 1, поэтому будем сравнивать только первый и второй. В принципе, есть все основания полагать, что последовательное добавление методом Append работает медленнее при условии большого количества входных слоев. Но насколько медленнее и как это сказывается на времени выполнения работы?

Тестирование показало, что время последовательного выполнения операции Append — это функция полинома второго порядка, которая пропорциональна квадрату количества исходных слоев. Если использовать инструмент Merge, то время выполнения будет расти линейно.


В случае использования инструмента Append, каждый добавляемый новый слой будет увеличивать время выполнения операции. Чем больше слоев вы добавляете, тем больше времени будет требовать каждая последующая операция добавления. Первый слой в данном примере добавляется 3 секунды, 10-й уже 5 секунд, 20-й — 7 секнунд, 60-й — 15 секунд. Связано это видимо с тем, что инструмент Append в конце каждой операции заново вычисляет индексы полей. Чем больше слой в который добавляются данные, тем больше времени уйдет на вычисление индексов.

Благодаря построенным кривим можно оценить время выполнения операций Merge и Append для 1000 слоев для конкретного тестового набора:
Append (последовательное добавление) ~ 31 час.
Merge ~ 2 часа


Выводы
.

Если входных слоев немного (менее 10-20) и они небольшого размера, можно последовательно добавлять их методом Append и в некоторых случаях эта операция будет выполняться немного быстрее, чем операция Merge. Если исходных слоев более 20 и/или они достаточно большие с точки зрения количества объектов, лучше использовать Merge. Либо нужно использовать Append, но добавлять слои не последовательно, а указывать все исходные слои списком в качестве входного параметра.

Если вы используете инструмент Append вместе итераторами в Model Builder , то нужно внимательно проверять, в каком режиме он работает — все входные слои добавляются за одну операцию или последовательно по мере прохождения цикла? Разница в итоговом времени работы инструмента может отличаться в разы.