добавление и обрезка -- самый быстрый алгоритм
НЕ совсем так.
"Добавление" быстрее, чем "добавление и обрезка" даже по количеству слов , а ещё + "вычисление сколько".
Просто всё размазано по функциям по этому не очевидно.
Допустим плюсуем 20 к 10, а потом обрезаем до 15 - цикл 20 итераций, потом обрезаем. Или заполняем 5 до недостающего - цикл 5 итераций. тут обрезание и установка общей длины, собственно одно и тоже, поэтому в расчёт не берётся.
И нет вычислений сколько обрезать или добавить, пусть даже скрытых.
Лучше считать по количеству исполняемых ассемблерных команд, а не команд в листинге.