¿Por qué el código Swift se compila tan lentamente?

Una de las mayores diferencias entre Swift y Objective C es el uso de la inferencia de tipos y la falta de encabezados.

En los lenguajes de estilo C, cada vez que aparece un símbolo, el compilador ya sabe de qué tipo es. Esto es más rápido para el compilador, pero requiere que el programador haga más trabajo.
int value = func(4.3)
Al compilar esta línea, el compilador sabe que el valor es un entero, espera que func produzca un entero. Func también se escribirá en este punto y la compilación puede comenzar.

dejar valor = func (4.3)

En Swift puede aparecer un símbolo, pero el compilador no sabrá el tipo hasta que encuentre el lado derecho de la ecuación. Por lo tanto, no puede comenzar a generar código hasta que analice func, solo entonces sabrá el tipo de func. (Int) En ese momento sabe que el valor es un Int.

Esto podría significar que ningún código puede comenzar a compilarse hasta que se analicen todos los archivos.

Entonces Swift siempre va a ser un poco más lento que el Objetivo C, porque el compilador simplemente necesita hacer más trabajo. Pero esto debería ser más productivo porque una computadora tonta está haciendo el trabajo de burro.

La compilación rápida se hará más rápida. Como dice Amar Kanala, la compilación incremental llegó con Swift 1.2, y XCode 6.4 es aún más rápido.

No lo sé, pero creo que esta respuesta es probablemente “No han terminado de hacerlo rápido todavía”.

Otra respuesta sugiere que la inferencia de tipos juega un papel, pero no estoy seguro de que sea así. Go se considera un lenguaje muy rápido para compilar, y que usa inferencia de tipos. C # también lo usa, y eso se compila bastante rápido en Visual Studio. Ninguno de esos idiomas requiere archivos de encabezado tampoco.

No conozco los tecnicismos del compilador Swift, y probablemente esté por encima de mi nivel de pago de todos modos, pero probablemente apostaría a un Cherry Ripe que simplemente no se ha trabajado en gran medida para hacerlo rápido. El compilador Swift es lento como el infierno en comparación con casi cualquier otra cosa, compilar mi proyecto C # (que es un poco más grande en términos de líneas de código) debe ser 10 veces más rápido.

Creo que Apple probablemente solo esté trabajando en otras cosas en este momento, y Swift todavía es un lenguaje muy joven. Creo que eventualmente lo harán más rápido.

Antes de Swift 1.2, las compilaciones de Xcode no eran incrementales, cada cambio compilaba todos los archivos y generaba una compilación con Swift 1.2 y Xcode 6.3, las compilaciones de proyectos son incrementales, esto ha mejorado los tiempos de compilación de manera notable.

Otras características del lenguaje como la interoperabilidad rápida pueden estar contribuyendo a los tiempos de construcción.