Это, наверное. не тянет на ответ, но выполнение команды внутри запущенного контейнера, по-моему, и должно быть тяжеловесным.
Я глубоко не изучал этот вопрос, но это ведь подобие виртуализации: только с виртуальной машиной общаются на уровне обычных протоколов, а с Docker контейнером - какими-то своими средствами и на прикладном уровне (насколько я это понимаю).
Что касается ускорения - попробуй сделать скрипт, который будет засыпать на некоторое время и, просыпаясь, смотреть в volume, дёргать оттуда данные, и складывать их; а результат писать в stdout.
Ну и, к слову, открытие подпроцесса - тоже операция не из лёгких, наверное потому и скорость такая. Лучше запустить один главные процесс (без дочерних) и в нём выполнять все необходимые операции.
Или ещё один вариант - собрать свой образ, зашить туда ENTRYPOINT в виде твоего скрипта, и передавать туда данные для вычисления.
В общем вариантов много.