Mi respuesta probablemente no se ampliará demasiado en las respuestas existentes, pero siento que mis dos centavos pueden ser útiles.
Antes que nada; sí, por modularidad, generalmente renuncia a cierto nivel de tiempo de ejecución. Escribir todo en el código de ensamblaje te dará la mejor velocidad. Dicho eso ...
¿Conoces YouTube? ¿Es probable que sea el sitio de mayor ancho de banda existente o el segundo después de Netflix? Escriben una gran parte de su código en Python, que es un lenguaje altamente modular que no está construido para un rendimiento de primer nivel.
El problema es que cuando algo sale mal y los usuarios se quejan de que los videos se cargan lentamente, no hay muchos escenarios en los que esa lentitud se atribuya a la lenta velocidad de ejecución de Python. Sin embargo, la rápida compilación de Python y su capacidad modular para probar cosas nuevas sin verificación de tipo probablemente permitirán a los ingenieros depurar lo que está sucediendo bastante rápido ("Wow. Nuestro nuevo interno escribió un bucle que hace una nueva subconsulta SQL para CADA resultado ") o (" Oh, Firefox ha dejado de usar ese antiguo formato de encabezado de almacenamiento en caché; e hicieron una biblioteca de Python para configurar el nuevo fácilmente ")
En ese sentido, incluso en términos de tiempo de ejecución, un lenguaje modular puede considerarse más rápido porque una vez que encuentre cuáles son sus cuellos de botella, probablemente será más fácil reorganizar su código para que funcione de la mejor manera. Muchos ingenieros le dirán que los grandes golpes de rendimiento no fueron donde pensaban que estarían (y, de hecho, las cosas que optimizaron apenas fueron necesarias; ¡o ni siquiera funcionaron de la manera que esperaban!)