Xcode 4 – rendimiento lento

Tengo un problema con Xcode 4 que realmente responde muy lentamente a las interacciones del usuario, por ejemplo, código de edición, áreas de desplazamiento, etc. Esto sucede particularmente con proyectos de mayor escala con muchos controladores / archivos de vista, etc.

Limpié completamente el disco duro y reinstalé Snow Leopard y Xcode la otra semana, pero de forma constante volví a tener un tiempo de respuesta frustrante (durante varios días) interrumpiendo considerablemente el flujo de trabajo.

En ocasiones, también eliminé los “datos derivados” del proyecto a través del Organizador -> Proyectos y esto tuvo poco efecto.

Me pregunto si hay algo que pueda hacer para mejorar el rendimiento, además de obtener una máquina de mayor especificación en primera instancia.

FYI estoy ejecutando MacBook con procesadores Intel Core 2 Duo a 2GHz y 4GB de RAM.

En caso de que necesitemos una actualización, también me gustaría saber si las personas están experimentando este rendimiento deficiente de Xcode 4 en máquinas bien especificadas (lo que haría que nuestra actualización de hardware no tenga sentido ya que solo Xcode tiene algún problema de rendimiento en la MacBook).

Si alguien tiene alguna sugerencia o recomendación o incluso nos puede decir cómo el hardware mejorado afecta el rendimiento de Xcode en árboles de proyectos más grandes, eso sería extremadamente útil y también un recurso valioso para otros desarrolladores en una posición similar.

Si purga el archivo del espacio de trabajo, ayuda a acelerarlo.

Primero, asegúrese de que Xcode no esté abierto. Ahora encuentra tu archivo de proyecto. Haga clic derecho sobre él y seleccione Show Package Contents .

enter image description here

A continuación, elimine project.xcworkspace .

enter image description here

¡Abre Xcode y disfruta de un rendimiento más rápido!

Gracias a: http://meachware.blogspot.com/2011/06/speed-up-xcode-4.html


Editar: He recibido varios comentarios al respecto que indican que para algunos proyectos esto podría causar problemas. Asegúrese de tener una copia de seguridad de su proyecto antes de realizar estos pasos, y no olvide verificar y probar su proyecto posteriormente . Asegúrese de tener todos sus ejecutables y esquemas.

ACTUALIZACIÓN IMPORTANTE: Cambios de ruta para Xcode 6 (¡Gracias por el comentario dcc)! Acabo de agregar la forma alternativa.


Hay otro buen truco para acelerar las comstackciones creando un disco RAM con la siguiente línea de código:

 diskutil erasevolume HFS+ "ramdisk" `hdiutil attach -nomount ram://8475854` 

Esto crea una imagen de disco en memoria con un tamaño de aproximadamente 4 GB. Pero ten cuidado, necesitas tener suficiente memoria. Por supuesto, puede crear una imagen más pequeña, como 2 GB (que sería 4237927).

Luego le dices a Xcode que almacene datos derivados allí enter image description here

No puede decirle a Xcode que almacene los datos del simulador de iPhone allí directamente, pero puede crear una carpeta en el disco RAM y crear un enlace simbólico en lugar del directorio de iPhone Simulator haciendo esto:

Xcode 6:

 cd /Volumes/ramdisk mkdir CoreSimulator rm -R ~/Library/Developer/CoreSimulator ln -s /Volumes/ramdisk/CoreSimulator ~/Library/Developer/CoreSimulator 

Versiones anteriores de Xcode:

 cd /Volumes/ramdisk mkdir iPhone\ Simulator rm -R ~/Library/Application\ Support/iPhone\ Simulator ln -s /Volumes/ramdisk/iPhone\ Simulator ~/Library/Application\ Support/iPhone\ Simulator 

Si construyo para el simulador con esta configuración, está funcionando en muy poco tiempo 🙂

Tenga en cuenta que el disco RAM desaparecerá cuando reinicie su máquina, por lo que podría ser una buena idea crear una secuencia de comandos o algo que se ejecute al inicio. ¡Y NO PONGA NINGÚN DATO ALLÍ QUE QUIERA MANTENER!

ACTUALIZACIÓN 2013-03-12:

  1. ¡Lee el comentario de Francisco García a continuación!

  2. Con mi nuevo MBP (que contiene un disco SSD) ya no necesito este método. Xcode corre como el infierno :). Espero que esto no se vea como publicidad para la gran preocupación de las frutas, es solo un informe de experiencia …

La desactivación de Live Issues en Preferencias generales ha marcado una diferencia definitiva. También configuré un esquema sin gdb habilitado para situaciones en las que estoy frecuentemente volviendo a ejecutar (ningún gdb acelera el lanzamiento bastante).

No sé si esto ayuda a alguien, pero para mí, XCode obtuvo un gran aumento en el rendimiento después de configurarlo para ejecutarse en modo de 32 bits (era 64 por defecto). Es casi tan rápido como el antiguo xcode 3. Puede cambiar a 32 bits haciendo clic con el botón derecho en la aplicación (en /Developer/Applications/XCode.app ) y seleccionando Obtener información y marcando Abrir en el modo de 32 bits .

Xcode 4.2, 4.3:

¿Tiene problemas importantes con el indexador de archivos (el mismo código que ejecuta Spotlight, que ha tenido problemas durante años? Probablemente).

Deshabilita todo lo no esencial relacionado con “mirar” archivos:

  1. Ayuda rápida (NB: ¡nunca haga clic en la pestaña QH! ¡Incluso ocultar el asistente sigue causando la ejecución del código! Cambie a una pestaña diferente antes de pasar a un nuevo archivo …)
  2. Administración de SCM (SVN, Git, etc.) El soporte git de Xcode todavía tiene errores (puede dañar proyectos), y se les ha caído la compatibilidad con SVN, ¡así que no deberías usarlo de todos modos!
  3. intente eliminar su carpeta de espacio de trabajo (según la respuesta aceptada), pero solo si es grande en el disco
  4. … cualquier otra cosa que pueda encontrar relacionada con el estado de los archivos individuales

Xcode 4.4, 4.5:

Estas versiones tienen una importante pérdida de memoria, un indexador de archivos roto (pero mejor que 4.2 y 4.3), y tal vez un problema de archivo de intercambio privado.

Eventualmente, al deshabilitar / habilitar el espacio de intercambio ( cómo deshabilitar o habilitar el intercambio en mac os x ) y usar discos duros normales en varias máquinas, y al ejecutar experimentos en máquinas con 2 GB de RAM hasta 16 GB de RAM, descubrí que Xcode parece ejecutar su propio espacio de intercambio, independiente del intercambio de OS X (!).

(Esto podría ser un error, tal vez haya una forma extra de intercambio de OS X, no lo sé), pero los archivos de intercambio del sistema no se hicieron más grandes o más pequeños, mientras que el espacio en disco subió y bajó gigabytes en algunas máquinas)

Observado:

  1. Xcode 4.4 / 4.5 tomará aleatoriamente toda la memoria RAM en su sistema (10 de GB para un proyecto pequeño) para que el rest del sistema se detenga, atascado esperando el intercambio de disco

    1. PEOR: en macbooks con SSD, no sabrá que esto ha sucedido
    2. PEOR: … a pesar de que posiblemente esté dañando su disco duro (a las SSD no les gustan las escrituras)
  2. Xcode controlará el acceso al disco duro para que pueda hacer su indexación de archivos internos (descompuestos). Cuando la memoria del sistema baja, y OS X necesita intercambiar … se queda atascado esperando que Xcode indexe los archivos … y Xcode toma más memoria mientras espera … y: ¡BOOM! en sistemas más pequeños, OS X eventualmente se cuelga

  3. Xcode no necesita espacio de intercambio de OS X

El último es muy interesante. Si tiene mucha memoria (por ejemplo, 16 GB), intente deshabilitar el espacio de intercambio de forma permanente. Xcode se ejecuta más rápido, porque OS X Lion tiene algunos errores en la administración de la memoria, donde se intercambia incluso cuando no es necesario .

Si xcode se ralentiza repentinamente, se intercambia internamente, en ese punto puedes matarlo y reiniciarlo.

(Si tiene una SSD, la única forma en que puede saber si comenzó a intercambiar es esperar a que “se vuelva más lento”. De lo contrario, sabrá tan pronto como escuche la transmisión HD: ya no hay archivos de intercambio del sistema, la única causa posible es Xcode)

Puedes deshabilitar el intercambio de forma segura incluso si tienes 2GB de RAM (solo tuve un colapso de OS X por mes cuando probé esto, lo ejecuté de esta manera por un año), pero esto te impedirá hacer video / gráficos de alta calidad con archivos que necesitan varios gigabytes solo para ejecutarse. Siéntete libre de probarlo durante unas semanas y ver qué pasa.

Pero … reiniciar Xcode cada vez que se ralentiza funciona de maravillas. En máquinas con menos memoria RAM, el archivo de intercambio privado de Xcode parece borrarse INMEDIATAMENTE cuando se cierra (no parece suceder en máquinas con mucha RAM)

Ninguna de estas respuestas realmente mejoró el rendimiento en mi caso (a lo largo del tiempo, Xcode 4.1 apenas se podía usar, solo dejarlo de vez en cuando ayudaba).

Sin embargo, descubrí que si sigo cerrando todos mis documentos (control-comando-W) parece que se mantiene rápido. Xcode guarda de forma automática todos los documentos que hace clic en la memoria, y puede navegar entre ellos con la flecha izquierda / derecha del control-comando. Si accidentalmente abre demasiadas (especialmente ventanas de IB), se detiene. Simplemente cerrar todos los documentos abiertos de vez en cuando parece aliviar esto sin la necesidad de hacer un reinicio completo.

La siguiente publicación de @lukasz ayudó un poco, particularmente su artículo # 8 en su respuesta (Panel de utilidad cerrado y Panel de ayuda rápida)

Xcode 4 se volvió extremadamente lento y mata mi disco duro

Todos los que experimenten estos problemas deberían probar Xcode 4.1 en Mac OS X Lion. Me sorprende lo mucho más rápido y sensible que es en el mismo hardware (Macbook Pro 2.66 GHz Core 2 Duo con 4 GB de RAM aquí).

Supongo que arreglaron toneladas de errores de rendimiento con este lanzamiento.

Estoy enfrentando los mismos problemas, los que fueron corregidos en parte desde la versión beta pero aún persisten. Parece que Xcode internamente tiene una (o más …) fugas que están flotando en tu memoria, puedes ver esta ingeniosa “función” muy bien cuando usas el Interface-Builder integrado. Dos soluciones posibles debajo de rezar y llenar informes de errores a Apple:

  1. No use el generador interno, inicie la aplicación externa en su lugar
  2. Salga de Xcode de vez en cuando, esto debería liberar la memoria que se filtró

Lo siento, pero creo que no hay mejores soluciones …: /

Encienda los instrumentos con la plantilla de perfil de tiempo y conéctelos al Xcode en funcionamiento (o clang, llvm, etc., si su problema es durante las comstackciones). Debería poder ver el problema bastante rápido. He visto causas muy diferentes en diferentes máquinas. El control de versiones es a menudo un culpable.

Intenté casi todo lo que se sugirió en este hilo y [numerosos] otros y lo único que funcionó para mí fue “desactivar” la subversión para el proyecto. Aquí está la parte mala: la ÚNICA manera en que pude “desactivar” el plugin SVN incorporado fue frigir mi archivo / etc / hosts con una dirección IP falsa, causando efectivamente que falle todo el acceso SVN.

He intentado eliminar / cambiar el nombre de IDESubversion.ideplugin en / Developer / Library / Xcode / PrivatePlugIns, pero Xcode 4.2.1 vomita y se niega a comenzar.

Traté de eliminar mis repositorys SVN de Xcode cada vez que reinicié Xcode, pero Xcode falla en unos minutos.

Intenté apagar el “Estado remoto” a través de Archivo-> Control de fuente-> Ocultar estado remoto (no hice nada por mí).

Ahora que he establecido mi nombre de host SVN en 1.2.3.4 en mi archivo de hosts, Xcode funciona muy bien y no muestra el SBBOD casi cada vez que cambio de un archivo a otro.

 $ grep 1.2.3.4 /etc/hosts 1.2.3.4 svn.myhost.com 

Entonces, cuando realmente quiero hacer control de versiones, tengo que descomprimir el archivo de hosts y usar la línea de cmd svn.

Encontré un truco para acelerar el rendimiento de comstackción de XCode 4:

Cuando ejecuta o comstack o cualquier otro proceso en xcode y deja de abrir el monitor activo y selecciona el proceso xcode, haga clic en el proceso de muestra. Hará que el proceso se despegue y se ejecute de nuevo de forma normal, lo que permite construir la aplicación en un tiempo razonable. Al menos esto funciona para mí.

Será

En mi caso, fue el uso de RAM.

enter image description here

Intenta matar algunas tabs de Chrome o aplicaciones poco utilizadas. Esto debería ayudar!

Finalmente obtuve mi trabajo de xcode normal apagando la función de git.

Muchas buenas sugerencias aquí, resolví mi problema mediante la desactivación de instantáneas como se describe aquí:

La edición del guión gráfico en Xcode 5 es muy lenta

Puede evitar indexar Xcode. Si lo hace, mejorará el rendimiento de la memoria de su sistema, pero también evitará las funciones IDE, como la autocompletación y el salto a las definiciones.

 $ defaults write com.apple.dt.XCode IDEIndexDisable 1 

Si tiene un rendimiento lento mientras modifica un archivo .xib con el constructor / editor de interfaz, vaya a File Inspector para .xib y desactive el diseño automático . Realice sus ediciones en .xib, luego como último paso, vuelva a habilitar el diseño automático y agregue o ajuste las restricciones.