Всё очень просто - без выигрыша по IO (блокирующим операциям) производительность корутин бесконечно стремится (но никогда не достигает) к производительности экзекуторов, поскольку это тоже переключения, тоже запуск чего-то на треде. Разница появляется, когда вам нужно ждать ответа из сети (например), то есть появляются операции, которые в классических тредах вешают поток:) на серваке из такого я сходу только ожидание соединения могу назвать, но пока у вас количество запросов на находится +/- на границе вашего числа тредов/тредов в диспетчере корутин - врядли вы почувствуете разницу