Параллелизм принимает много форм.Это полностью зависит от базового оборудования и проблемы, которую вы пытаетесь «распараллелить».
В вашем случае вы можете получить конфликт ресурсов на уровне ЦП.Сколько ядер?Общий кеш?Вычислительно дорогие процедуры?Очень легкие процедуры, так что издержки на многопоточность перевешивают выгоды?Получают ли подпрограммы доступ к общему состоянию?
Множество вопросов.По сути, не думайте, что параллельный код выполняется быстрее.
Извините, это не ответ на ваши проблемы с производительностью, но для этого вам нужно объяснить, что делает каждая подпрограмма.
С другой стороны, я сделаю оптимистичное предположение, что вы хорошо поработали и профилировали два куска кода.Ваше профилирование говорит вам, что «распараллеливание» (заметьте, не парализуя :-P) кода не дает никакой выгоды, поэтому его можно избежать в пользу более простого синхронного кода.
На самом деле , чтобы ответить на ваш вопрос: да, это может быть нормально, но требует понимания проблемы, которую вы пытаетесь распараллелить.Не используйте этот пример в качестве показателя производительности, ожидаемой от TPL.Я всегда ем скромный пирог, когда дело доходит до ошибок или предположений, которые я делаю с асинхронным кодом ...