Xcode 4 - rendimiento lento

128

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

Limpié por completo el disco duro y reinstalé Snow Leopard y Xcode la otra semana, pero constantemente volví a un tiempo de respuesta frustrante (durante varios días) que interrumpió el flujo de trabajo considerablemente.

En ocasiones, también he eliminado los "datos derivados" del proyecto a través del Organizador -> Proyectos y esto ha tenido poco efecto.

Me pregunto si hay algo que pueda hacer para mejorar el rendimiento que no sea obtener una máquina con 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 actualizar, también me gustaría saber si las personas están experimentando este bajo rendimiento de Xcode 4 en máquinas bien especificadas (lo que haría que nuestra actualización de hardware no tuviera sentido, ya que solo Xcode tiene algún problema de rendimiento en el MacBook).

Si alguien tiene alguna sugerencia o recomendación o incluso podría decirnos 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.

Kzrbill
fuente
Hice una reseña bastante larga para Xcode 4.2 en esta publicación: stackoverflow.com/questions/7780663/…
justin
1
Encontré mejores soluciones que todas las explicadas aquí. Me cambié a AppCode. Sí, costaba $ 99, pero era más barato que comprar una Mac nueva. Tengo una MacBook Pro de 2010. Tiene un procesador más rápido que cualquiera de las MacBook Airs, pero aquí en la oficina, las personas que las usan aún pueden obtener una mejor velocidad. He reinstalado Lion, luego hice una instalación limpia para Mountain Lion, y todavía no tuve suerte. Así que ahora uso AppCode y estoy feliz de nuevo.
HotFudgeSunday
1
Una desafortunada falsedad. AppCode es incluso más lento que Xcode. Parece una aplicación Java. Aporta una gran cantidad de complementos de código sofisticados, importación automática, etc. que requieren procesos en segundo plano. Puede ser mejor para algunas situaciones, pero no para evitar el lento rendimiento de Xcode.
Gabe Rainbow

Respuestas:

161

Si purga el archivo del espacio de trabajo, lo ayudará a acelerarlo.

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

ingrese la descripción de la imagen aquí

A continuación, elimine project.xcworkspace.

ingrese la descripción de la imagen aquí

¡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: Recibí varios comentarios sobre esto, señalando 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 comprobar y probar su proyecto después . Asegúrese de tener todos sus ejecutables y esquemas.

sudo rm -rf
fuente
eliminar el espacio de trabajo ayudó al problema, pero no creo que realmente necesites obtener ese applet jejeje
Vincent Bacalso
3
Wow: me estaba arrancando el cabello debido a las constantes pelotas de playa, y ahora funciona como un sueño. Gracias por el consejo absolutamente esencial. Vale la pena mencionar que restablece temporalmente el diseño de su ventana (lo que puede o no ser obvio), pero es un pequeño precio a pagar. Además, si las personas desean eliminar manualmente el archivo del espacio de trabajo, pueden controlar y hacer clic en su archivo xcodeproj, elegir 'mostrar contenido del paquete' y luego eliminar o mover el archivo .xcworkspace.
Erik Asmussen
11
@sudo Increíble, pero ahora he perdido mi excusa de rendimiento y no puedo comprarme un nuevo MBP más rápido.
Daniel Blezek
Tengo problemas de rendimiento similares. Una cosa que veo en el pequeño panel de estado en la parte superior central de la ventana es un mensaje que dice "Indexación | procesado 0 de 1 archivo" (los números son solo ejemplos). ¿Podría eso también estar aumentando el rendimiento lento?
milesmeow
3
Este es un consejo MALO: el directorio xcworkspace contiene algunos de los archivos principales para su proyecto. En un proyecto muy simple, faltarán esos archivos y estará bien, por lo tanto, probablemente aún no se haya dado cuenta de esto. En proyectos complejos, por ejemplo, con ejecutables compartidos, esquemas compartidos, etc., dañará su proyecto. consulte la pregunta .gitignore para obtener detalles de QUÉ archivos dentro de xcworkspace son seguros de eliminar, ¡y cuáles no! stackoverflow.com/questions/49478/…
Adam
46

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


Hay otro buen truco para mejorar las compilaciones 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 tenga cuidado, necesita tener suficiente memoria. Por supuesto, puede crear una imagen más pequeña como 2 GB (eso sería 4237927).

Luego le dice a Xcode que almacene allí los datos derivados ingrese la descripción de la imagen aquí

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 del Simulador de iPhone 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á en funcionamiento 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 un script o algo que se ejecute en el inicio. ¡Y NO PONGA NINGÚN DATO QUE QUIERA MANTENER!

ACTUALIZACIÓN 2013-03-12:

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

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

benjamin.ludwig
fuente
2
oh hombre ... este es realmente genial. pero IMPORTANTE: esto borrará sus datos básicos del simulador ... perderá todos los resultados de las pruebas que haya realizado hasta ahora. así que gracias por una construcción masivamente más rápida, pero la advertencia hubiera sido agradable =)
Sebastian Flückiger
2
para cualquiera que haga esto, tenga en cuenta que HAY UNA COSA QUE QUIERE MANTENER en su carpeta de datos derivados, su archivo de símbolos. Una vez que implemente una aplicación, querrá mantener en algún lugar seguro su archivo de símbolos en caso de que desee depurar con un informe de bloqueo
SystematicFrank
1
@FranciscoGarcia Si implementa una aplicación a través del organizador de xcode archivando, los dSYM estarán en el archivo. Esto se almacena fuera de la carpeta de datos derivados (al menos está en la versión actual de xcode - 4.6)
Danny Parker
1
@imcaptor Puede usar Automator para crear un programa que ejecute un script. En las preferencias de su sistema, vaya a Usuario y Grupos -> Elementos de inicio de sesión y agregue ese programa. Apuesto a que hay una manera más fácil, pero esta funciona
benjamin.ludwig
1
La ruta ~ / Library / Application \ Support / iPhone \ Simulator ya no parece ser correcta. Por favor actualice.
davidcondrey
9

La desactivación de problemas en vivo en las preferencias generales ha marcado una gran diferencia. También configuré un esquema sin gdb habilitado para situaciones en las que frecuentemente vuelvo a ejecutar (no gdb acelera bastante el inicio).

Greg
fuente
7

Para mí, Xcode ganó un gran aumento de 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 derecho en la aplicación (en /Developer/Applications/XCode.app ) y seleccionando Obtener información y marcando Abrir en modo de 32 bits .

gyozo kudor
fuente
No hizo ninguna diferencia para mí en mi MBP 2.2Ghz i7 en 10.6.8. ¿Qué computadora / SO tienes?
ettore
Tengo una Mac Mini con 2.26 Ghz Intel Core 2 Duo, 10.6.8, 2GB de memoria.
gyozo kudor
7

Xcode 4.2, 4.3:

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

Deshabilite todo lo que no sea esencial relacionado con la "observación" de archivos:

  1. Ayuda rápida (NB: ¡nunca haga clic en la pestaña QH! ¡Incluso si oculta el Asistente aún hace que se ejecute el código! Cambie a una pestaña diferente antes de pasar a un nuevo archivo ...)
  2. Gestión de SCM (SVN, Git, etc. - El soporte git de Xcode sigue siendo un poco defectuoso (puede corromper proyectos), y han dejado de admitir 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 fuga de memoria importante, un indexador de archivos roto (pero mejor que 4.2 y 4.3), y quizás un problema de archivo de intercambio privado.

Finalmente, al deshabilitar / habilitar el espacio de intercambio ( cómo deshabilitar o habilitar el intercambio en mac os x ), y al 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 hay una forma adicional de intercambio de OS X que no conozco, pero los archivos de intercambio del sistema no se hicieron más grandes o más pequeños, mientras que el espacio en disco aumentó de gigabytes en algunas máquinas)

Observado:

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

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

  3. Xcode no necesita espacio de intercambio 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 gestión de la memoria donde se intercambia incluso cuando no es necesario .

Si xcode se ralentiza repentinamente, se está intercambiando internamente, en ese momento puede simplemente matarlo y reiniciarlo.

(si tiene un SSD, la única forma de saber si comenzó a intercambiarse es esperar a que se "ralentice". De lo contrario, lo sabrá tan pronto como escuche el ruido de HD: ya no hay intercambio de sistema, por lo que el la única causa posible es Xcode)

Puede deshabilitar el intercambio de forma segura incluso si tiene 2 GB de RAM (solo tuve un bloqueo de OS X por mes cuando lo intenté, lo ejecuté de esta manera durante un año), pero le impedirá hacer trabajos de video / gráficos de alta gama con archivos que necesitan varios gigabytes solo para ejecutarse. Siéntase libre de probarlo durante unas semanas y ver qué sucede.

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

Adán
fuente
4

Ninguna de estas respuestas realmente mejoró el rendimiento en mi caso (con el tiempo Xcode 4.1 se volvió difícil de usar, solo lo dejé de vez en cuando y ayudó).

Sin embargo, acabo de descubrir que si sigo cerrando todos mis documentos (control-comando-W) parece que se mantiene rápido. Xcode guarda automáticamente todos los documentos en los que hace clic en la memoria de alguna manera, y puede navegar entre ellos con la flecha izquierda / derecha de control-comando. Si accidentalmente abre demasiados (especialmente ventanas de IB), se detiene lentamente. Simplemente cerrar todos los documentos abiertos de vez en cuando parece aliviar esto sin la necesidad de reiniciar por completo.

Polla
fuente
2

Todos los que experimenten estos problemas deberían probar Xcode 4.1 en Mac OS X Lion. Estoy sorprendido de cómo mucho más rápido y sensible que está en el mismo hardware (MacBook Pro a 2,66 GHz Core 2 Duo con 4 GB de RAM aquí).

Supongo que solucionaron toneladas de errores de rendimiento con esta versión.

Ricardo Sánchez-Sáez
fuente
2
Todavía lento para mí en una configuración similar. (Xcode 4.1 y Mac OSX Lion en MacBook 2.26 GHz Intel Core 2 Duo, 2 GB de RAM)
Andrei
1

Encienda los instrumentos con la plantilla de perfil de tiempo y adjúntela al Xcode en ejecución (o clang, llvm, etc. si su problema es durante las compilaciones). 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.

sofocante
fuente
1

Estoy enfrentando los mismos problemas. Se corrigieron en parte ya que las versiones beta aún son persistentes. Parece que Xcode internamente tiene una o más fugas que están flotando en su memoria. Puedes ver esta ingeniosa "característica" muy bien cuando usas el Interface-Builder integrado. Dos posibles soluciones debajo de orar y llenar informes de errores a apple:

  1. No utilice 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ó.
Tim Specht
fuente
Obtuve un nuevo iMac Mid 2011, 3,1 i5, memoria gráfica Ram + 1gb de 12 gb, los problemas no me molestan mucho aquí, pero antes de comprarlo me desarrollé en un MacBook, solo consiga un trabajo máquina, vale la pena, confía en mí :)
Tim Specht
0

He intentado casi todo lo que se sugirió en este hilo y en [muchos] otros, y lo único que me funcionó fue "deshabilitar" la subversión para el proyecto. Aquí está la parte mala: la ÚNICA forma en que pude "deshabilitar" el complemento SVN incorporado fue frigar mi archivo / etc / hosts con una dirección IP falsa, lo que hizo que fallara todo el acceso SVN.

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

Intenté eliminar mis repositorios SVN de Xcode cada vez que reinicio Xcode, pero Xcode se bloquea en unos minutos.

Intenté desactivar "Estado remoto" a través de Archivo-> Control de origen-> Ocultar estado remoto (no hizo nada por mí).

Ahora que configuré 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 archivo.

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

Luego, cuando realmente quiero hacer el control de versiones, tengo que quitar la configuración del archivo de hosts y usar cmd line svn.

DustinB
fuente
Intente cambiar el nombre de la carpeta, /Applications/Xcode.app/Contents/PlugIns/IDESubversion.ideplugin, a algo con un final diferente. He usado un truco similar para deshabilitar el complemento Git.
John McFarlane
0

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

$ defaults write com.apple.dt.XCode IDEIndexDisable 1
davidcondrey
fuente
0

Si tiene un rendimiento lento al modificar un archivo .xib con el generador / editor de interfaces, vaya a Inspector de archivos para el .xib y desactive el diseño automático . Realice sus ediciones en el .xib, luego, como paso final, vuelva a habilitar el diseño automático y agregue o ajuste las restricciones.

Chispeante
fuente
0

Finalmente conseguí que mi Xcode funcionara normalmente desactivando la función git.

Emmy
fuente
0

En mi caso, fue el uso de RAM.

ingrese la descripción de la imagen aquí

Intenta eliminar algunas pestañas de Chrome o aplicaciones poco utilizadas.

Maciek Czarnik
fuente
0

He encontrado un truco para acelerar el rendimiento de compilación de XCode 4: cuando ejecuta o compila o realiza cualquier otro procesamiento en Xcode y se detiene el monitor activo abierto, seleccione el proceso de Xcode y luego haga clic en el proceso de muestra. Hará que el proceso se despegue y se ejecute nuevamente de manera normal, lo que permite compilar la aplicación en un tiempo razonable.

william pagnon
fuente