Как минимум, на некоторых архитектурах первый вариант на самом деле может работать быстрее. Это связано с кэшированием инструкций. Я с таким сталкивался: одна функция (включая вложенные вызовы) помещается в специальном кэше инструкций, а для двух места в кэше уже не хватает, и память дёргается туда-сюда. В результате, экономия в первом варианте получается серьёзная
С другой стороны, если функции небольшие, и работают с общими данными, то второй вариант может быть лучше, потому что выполняет поблочную обработку данных. А первый может приводить к передёргиванию кэша данных и более медленной работе с данными в целом.
В общем, универсального ответа быть не может.