update para linea instalar for descargar xcode swift3

para - xcode simulator



Tiempo de compilación increíblemente lento (8)

Mi proyecto consta de ~ 350 archivos Swift y ~ 40 dependencias de vaina de cacao.

Tan pronto como se migró todo el proyecto a Swift 3 , los tiempos de compilación han sido INCREÍBLEMENTE lentos y la compilación completa tardó un poco más de 3 minutos.
Me di cuenta de que si reconstruyo después de no cambiar ningún archivo, se construye dentro de un período de tiempo razonable. Sin embargo, si agrego una nueva función, me llevará más de 3 minutos.
Cocoapods no parece estar causando el problema, ya que se retrasa al Compiling Swift source files estado de los Compiling Swift source files .

Seguí this para investigar:

  1. -Xfrontend -debug-time-function-bodies a mis Other Swift Flags -Xfrontend -debug-time-function-bodies en la configuración de compilación de mi objetivo

  2. Construye el proyecto

  3. Copié esto en la terminal y ejecuté pbpaste | egrep ''/.[0-9]ms'' | sort -t "." -k 1 -n | tail -100 pbpaste | egrep ''/.[0-9]ms'' | sort -t "." -k 1 -n | tail -100

Sin embargo, no vi nada de preocupación. El archivo que tardó más en compilarse fue de solo 250 ms. El siguiente valor más cercano fue de 100 ms, incluso si los 350 archivos tardaran 250 ms en compilarse, eso sería solo un total de 73 segundos, lo que está muy lejos de las compilaciones de más de 3 minutos que estoy viendo.


¿Qué podría estar causando estos largos tiempos de compilación?

Nunca fue tan lento antes de actualizar a Xcode 8 y Swift 3 .


Actualización 1:

Creé un nuevo proyecto sin ejecutar la conversión Swift 3 , importé mis archivos Swift 3 , pero el tiempo de compilación sigue siendo el mismo.

Actualización 2:

He intentado SWIFT_WHOLE_MODULE_OPTIMIZATION = YES , pero tan pronto como realice cambios en más de 1 archivo, la compilación incremental falla y desencadena una reconstrucción que dura más de 4-5 minutos.

Actualización 3:

Ahora he reescrito todo mi código base de Swift 3 a Swift 2.3 . No hizo ninguna diferencia, el problema radica en el compilador Xcode 8 .

Actualización 4:

Puedo confirmar que desmarcando estos dos Aliviará el dolor por un tiempo, el error Xcode 8 parece estar relacionado con la forma en que verifica las dependencias entre los archivos.

Actualización 5:

He convertido mi base de código a Swift 3 desde Swift 2.3 ya que Xcode 8.2 beta lo requiere, la beta debería incluir una solución para "Xcode no reconstruirá un objetivo completo cuando solo se hayan producido pequeños cambios (28892475)". Lamentablemente, no han solucionado el error y mis tiempos de compilación son exactamente los mismos con Xcode 8.2 Beta .

Publicación original:

No tengo suficiente reputación para comentar, pero todavía quería compartir algunos recursos. He estado atrapado en esta miseria durante días, la actualización a Swift 3 ha sido un completo desastre.

Estoy usando esto para rastrear archivos lentos, aunque como tú, ese no es mi problema. Algo más en xcode está tardando literalmente 4 minutos en completarse: https://github.com/irskep/swift_compile_times_parser https://github.com/RobertGummesson/BuildTimeAnalyzer-for-Xcode

También me aseguré de no tener lazy vars o closures lazy vars que a Swift no le gusten. No use el + operator cuando concatene cadenas, etc. vea esto .

Actualizaré esta respuesta si encuentro algo, es casi imposible ser productivo con Swift 3 ATM.


Cada vez que se enfrente a un problema de compilación lenta, observe detenidamente los SDK de terceros que incluyó en su aplicación y también intente encontrar sus técnicas de codificación.

Enfrenté este problema dos veces en mi aplicación y me sentí acosado por Swift 3 😡. Las razones de los tiempos eran diferentes.

La primera vez que encontré que agregué una biblioteca en mi aplicación llamada AASignatureView . Desde que se agregó esta lib, mi tiempo de compilación aumentó como el infierno. Comenzó a tomar cerca de 12-15 minutos en ejecutar la aplicación en el simulador. El problema se resolvió después de eliminar esta biblioteca de mi código y agregar VMSignatureView y mi tiempo de compilación entró en estado normal.

La segunda vez me enfrenté a este problema después de hacer un código para agregar varias cadenas. Los dos métodos siguientes convirtieron el tiempo de compilación de la aplicación en un infierno

a = a + b

y

a += b

Luego cambié mi código a continuación y el problema se resolvió.

a = "a/(strSometihng),/(strAnother)"


Encontré un par de estilos de codificación que llevan mucho tiempo compilar en Swift (2.3, no probado en 3):

a += b

Debiera ser

a = a + b

También agregando matriz juntos:

var a = [1,3,4] var b = [5,6,7,8] var c = [8,4,3,5] var d = a + b + c

Debiera ser

var a = [1,3,4] var b = [5,6,7,8] var c = [8,4,3,5] var d : [Int] = [] d.appendContentsOf(a) d.appendContentsOf(b) d.appendContentsOf(c)

La última optimización tomó el tiempo de compilación para 1 método de 9800ms a 5.5ms ...


Estoy usando Xcode 8.1 Mi problema fue con el diccionario que usa el Nil-Coalescing Operator

Este es mi código cuando toma 10 minutos construir:

let params: [String:String] = [ "email": email ?? self.email, "clave": password, "tipo_documento": documentType?.rawValue ?? self.typeDocument.rawValue, "documento": number ?? self.documentNumber, "nombre": name ?? self.name, "apellidos": lastName ?? self.lastName, "fecha_nacimiento": birth?.parse() ?? self.birthDate.parse(), "genero": genre?.rawValue ?? self.genre.rawValue, "telefono_movil": cel ?? self.cel, "direccion": address ?? self.address ]

No sé por qué, pero me anuncia que el Diccionario tarda mucho en compilarse.

Luego lo cambio a:

var params: [String:String] = [:] params["email"] = email ?? self.email params["clave"] = password params["tipo_documento"] = documentType?.rawValue ?? self.typeDocument.rawValue params["documento"] = number ?? self.documentNumber params["nombre"] = name ?? self.name params["apellidos"] = lastName ?? self.lastName params["fecha_nacimiento"] = birth?.parse() ?? self.birthDate.parse() params["genero"] = genre?.rawValue ?? self.genre.rawValue params["telefono_movil"] = cel ?? self.cel params["direccion"] = address ?? self.address

Espero que pueda ayudar a algunos de ustedes.


La concatenación de varias cadenas también puede aumentar los tiempos de compilación, por ejemplo, en mi caso, mis tiempos de compilación eran muy altos debido a esta línea:

let fecha = post.dia + " " + post.num_dia + " " + post.mes + " - " + post.hora

Cuando cambié el código a esto, comenzó a compilar en segundos:

var fecha = post.dia! fecha = fecha + " " fecha = fecha + post.num_dia! fecha = fecha + " " fecha = fecha + post.mes! fecha = fecha + " - " fecha = fecha + post.hora!


Migré un proyecto Swift 2x de 17 archivos a Swift 3 y tuve 28 advertencias y 55 errores en todos los archivos. El tiempo de compilación fue de 4-5 minutos.

Deshabilitar

Find Implicit Dependancies

en esquema y

SWIFT_WHOLE_MODULE_OPTIMIZATION = YES

hecho solo mejoras menores.

Como eventualmente borré las advertencias y los errores en cada archivo, el tiempo de compilación se redujo y ahora está en segundos. El IDE vuelve a comportarse como debería, detectando errores casi en tiempo real y compilando rápidamente.

En primer lugar, parece que el compilador está volviendo a compilar (o al menos verificar) todos los archivos con algún error o advertencia, incluso si no ha editado ese archivo desde la última compilación.

En segundo lugar, si hay demasiados errores / advertencias dependientes en los archivos, el compilador se cuela y se ralentiza.


También la string concatenation parece ser increíblemente lenta en Swift3 / XCode8:

item.text = item.text + " " + pickerText + " " + (attribute?.Prefix ?? "") + inputText + (attribute?.Suffix ?? "")

~ tomó 8-10 segundos para compilar

item.text = "/(item.text) /(pickerText) /(attribute?.Prefix ?? "")/(inputText)/(attribute?.Suffix ?? "")"

~ tardó 1,6 segundos en compilar

item.text = [item.text, " ", pickerText, " ", (attribute?.Prefix ?? ""), inputText, (attribute?.Suffix ?? "")].joined();

~ tardó 0,001 segundos en compilar


SWIFT_WHOLE_MODULE_OPTIMIZATION = YES

Versión Xcode: 8.1 GM

Para agregar, elija su objetivo, luego vaya a Editor > Add Build Setting > Add User-Defined Setting y agregue lo anterior.

Mi tiempo de construcción limpio se redujo de 35 minutos (ejem, perdón) a 8 minutos con un recuento de archivos de proyecto de 800.

Nota: Probé esto en Xcode 8.0 primero, pero no funcionó.