Начальство предложило функции, в которые были зашиты этапы 1 и 2 (алгоритмы), развернуть и вставить в основную функцию. Я крутил и так и сяк, пытался какие-то предварительные действия вынести в основную функцию, не убирая полностью внутренние, но дыра не пропадала. Однако полностью запихивать функции этапа 1 и 2 в основную было плохой идеей, потому что эти функции использовались ещё в шести местах, кроме того, они вызвали ещё десять других функций, и, если дело было во времени вызова, то исключить те вызовы уже не удалось бы никак. Тогда у меня возникла невероятная догадка -- единственные две операции (кроме непосредственно вызова функций), которые могли занимать время (из оставшихся) -- это вывод сообщения в окошечко на экране и вывод отладочного сообщения в лог-файл (не в файл с данными, а в файл с отладочными сообщениями).
Я закомментировал вывод на экран и в лог-файл и -- о чудо -- пауза пропала! Дальнейшие изыскания выявили, что дело было в обращении к жёсткому диску (в файл с данными данные пишутся один раз -- в конце). Не думал, что лично столкнусь с ситуацией, когда в лог-файл писать некогда. Хотя меня когда-то предупреждали, что такое бывает. В таких случаях лог-файл пишут в память, а потом иногда сбрасывают на диск.