Xcode 4 - desempenho lento

128

Eu tenho um problema com o Xcode 4 realmente respondendo muito lentamente às interações do usuário, por exemplo, edição de código, áreas de rolagem etc. Isso ocorre principalmente em projetos de maior escala com muitos controladores / exibir arquivos etc.

Limpei completamente o disco rígido e reinstalei o Snow Leopard e o Xcode na outra semana, mas ele se firmou em um tempo de resposta frustrante novamente (durante vários dias), interrompendo consideravelmente o fluxo de trabalho.

Ocasionalmente, também removi os "dados derivados" do projeto através do Organizador -> Projetos e isso teve pouco efeito.

Gostaria de saber se há algo que eu possa fazer para melhorar o desempenho, além de obter uma máquina especificada mais alta em primeira instância.

Para sua informação, estou executando o MacBook com processadores Intel Core 2 Duo a 2 GHz e 4 GB de RAM.

No caso de precisarmos atualizar, também gostaria de saber se as pessoas estão com esse desempenho ruim do Xcode 4 em máquinas bem especificadas (o que tornaria nossa atualização de hardware bastante inútil, pois é apenas o Xcode que tem algum problema de desempenho no MacBook).

Se alguém tiver alguma sugestão ou recomendação ou puder nos informar como o hardware aprimorado afeta o desempenho do Xcode em árvores de projeto maiores, isso seria extremamente útil e também um recurso valioso para outros desenvolvedores em uma posição semelhante.

Kzrbill
fonte
Eu fiz um artigo bastante longo para o Xcode 4.2 neste post: stackoverflow.com/questions/7780663/…
justin
1
Encontrei soluções melhores do que todas as explicadas aqui. Eu mudei para o AppCode. Sim, custava US $ 99, mas era mais barato do que comprar um novo Mac. Eu tenho um MacBook Pro de 2010. Ele tem um processador mais rápido do que qualquer um dos MacBook Airs; no entanto, aqui no escritório, as pessoas que os utilizam ainda podem obter melhor velocidade. Eu reinstalei o Lion, fiz uma instalação limpa para o Mountain Lion e ainda não tive sorte. Então agora eu uso o AppCode e estou feliz novamente.
HotFudgeSunday
1
Uma infeliz mentira. O AppCode é ainda mais lento que o Xcode. Parece um aplicativo Java. Ele inclui muitas finalizações de código sofisticadas, #import automático e assim por diante que exigem processos em segundo plano. Pode ser melhor para algumas situações, mas não para evitar o desempenho lento do Xcode.
Gabe arco-íris

Respostas:

161

Se você limpar o arquivo da área de trabalho, ajudará a acelerá-lo.

Primeiro, verifique se o Xcode não está aberto. Agora encontre o seu arquivo de projeto. Clique com o botão direito do mouse e selecione Show Package Contents.

insira a descrição da imagem aqui

Em seguida, apague project.xcworkspace.

insira a descrição da imagem aqui

Abra o Xcode e desfrute de um desempenho mais rápido!

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


Edit: Eu recebi vários comentários sobre isso, observando que, para alguns projetos, isso pode causar problemas. Verifique se você possui um backup do seu projeto antes de executar essas etapas e não se esqueça de verificar e testar seu projeto posteriormente . Verifique se você ainda possui todos os seus executáveis ​​e esquemas.

sudo rm -rf
fonte
eliminar o espaço de trabalho não ajuda o problema, mas eu não acho que você realmente precisa para obter esse miniaplicativo heheh
Vincent Bacalso
3
Uau - eu estava arrancando meu cabelo devido ao constante balling na praia, e agora está correndo como um sonho. Obrigado pela dica absolutamente essencial. Vale ressaltar que ele redefine temporariamente o layout da janela (o que pode ou não ser óbvio), mas é um preço pequeno a pagar. Além disso, se as pessoas quiserem remover manualmente o arquivo da área de trabalho, elas podem clicar com o botão direito do mouse no arquivo xcodeproj, escolha 'mostrar o conteúdo do pacote' e exclua ou mova o arquivo .xcworkspace.
Erik Asmussen
11
@sudo Incrível, mas agora perdi minha desculpa de desempenho e não consigo comprar um MBP novo e mais rápido!?!
Daniel Blezek
Estou tendo problemas de desempenho semelhantes. Uma coisa que vejo no pequeno painel de status no meio superior da janela é uma mensagem que diz "Indexação | processou 0 de 1 arquivo" (os números são apenas exemplos). Isso também pode estar aumentando o desempenho lento?
milesmeow
3
Este é um conselho ruim - o diretório xcworkspace contém alguns dos arquivos principais do seu projeto. Em um projeto muito simples, esses arquivos estarão ausentes e tudo ficará bem; portanto, você provavelmente ainda não percebeu isso. Em projetos complexos - por exemplo, com Exectuables, esquemas compartilhados etc. - você corromperá o seu projeto. Consulte a pergunta .gitignore para obter detalhes sobre quais arquivos no xcworkspace são seguros para excluir - e quais não são! stackoverflow.com/questions/49478/...
Adam
46

ATUALIZAÇÃO IMPORTANTE: Caminhos alterados para o Xcode 6 (Obrigado pelo comentário dcc)! Acabei de adicionar o caminho alternativo.


Há outro truque interessante para acelerar as compilações criando um disco ram com a seguinte linha de código:

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

Isso cria uma imagem de disco na memória com um tamanho de cerca de 4 GB. Mas tenha cuidado, você precisa ter memória suficiente. Obviamente, você pode criar uma imagem menor como 2 GB (isso seria 4237927).

Então você diz ao Xcode para armazenar dados derivados lá insira a descrição da imagem aqui

Você não pode dizer ao Xcode para armazenar os dados do iPhone Simulator diretamente, mas você pode criar uma pasta no ramdisk e criar um link simbólico em vez do diretório do iPhone Simulator, fazendo o seguinte:

Xcode 6:

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

Versões anteriores do 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

Se eu construir para o simulador com esta configuração, ele estará pronto e funcionando em pouco tempo :)

Esteja ciente de que o disco ram desaparecerá quando você reiniciar sua máquina; portanto, pode ser uma boa ideia criar um script ou algo que seja executado na inicialização. E NÃO COLOQUE DADOS QUE DESEJA MANTER !!!

ATUALIZAÇÃO 12-03-2013:

  1. Leia o comentário de Francisco Garcia abaixo!

  2. Com o meu novo MBP (contendo uma unidade SSD), não preciso mais desse método. Xcode corre como o inferno :). Espero que isso não seja visto como publicidade para a grande preocupação com frutas, é apenas um relatório de experiência ...

benjamin.ludwig
fonte
2
oh cara .. este é realmente ótimo. IMPORTANTE: isso apagará os dados do simulador ... você perderá todos os resultados de testes feitos até agora. por isso obrigado por uma compilação massivamente mais rápido, mas a advertência teria sido bom =)
Sebastian Flückiger
2
para qualquer pessoa que esteja fazendo isso, esteja ciente de que HÁ UMA COISA QUE VOCÊ QUER MANTER NA pasta de dados derivada, no arquivo de símbolos. Uma vez que você implantar um aplicativo, você vai querer manter em algum lugar seguro seu arquivo de símbolo no caso de você deseja depurar com um relatório acidente
SystematicFrank
1
@FranciscoGarcia Se você implantar um aplicativo através do organizador xcode arquivando, os dSYMs estarão no arquivo morto. Este fora é armazenado da pasta de dados derivados (pelo menos é sobre a atual versão do Xcode - 4.6)
Danny Parker
1
@imcaptor Você pode usar o Automator para criar um programa que executa um script. Nas preferências do seu sistema, vá para Usuário e grupos -> Itens de login e adicione esse programa. Aposto que há uma maneira mais fácil, mas este funciona
benjamin.ludwig
1
O caminho ~ / Library / Application \ Support / iPhone \ Simulator não parece mais estar correto. Por favor atualize.
Davidcondrey
9

Desativar problemas ao vivo nas preferências gerais fez uma diferença definitiva. Também configurei um esquema sem o gdb habilitado para situações em que estou frequentemente executando novamente (nenhum gdb acelera bastante o lançamento).

greg
fonte
7

Para mim, o Xcode obteve um grande aumento de desempenho depois de configurá-lo para ser executado no modo de 32 bits (era 64 por padrão). É quase tão rápido quanto o antigo Xcode 3. Você pode alternar para 32 bits clicando com o botão direito do mouse no aplicativo (em /Developer/Applications/XCode.app ) e selecionando Obter informações e verificando Abrir no modo de 32 bits .

gyozo kudor
fonte
Não fez nenhuma diferença para mim no meu MBP 2.2Ghz i7 no 10.6.8. Qual computador / sistema operacional você possui?
ettore
Eu tenho um Mac Mini com 2,26 Ghz Intel Core 2 Duo, 10.6.8, 2 GB de memória.
Gyozo kudor
7

Xcode 4.2, 4.3:

Principais problemas com o indexador de arquivos (o mesmo código que executa o Spotlight, que está com erros há anos? Provavelmente).

Desative tudo o que não é essencial envolvido nos arquivos "assistindo":

  1. Ajuda rápida (NB: nunca clique na guia QH! Mesmo ocultar o Assistente ainda faz com que o código seja executado! Alterne para uma guia diferente antes de passar para um novo arquivo ...)
  2. Gerenciamento de SCM (SVN, Git, etc - o suporte ao Xit do gcode ainda é um pouco problemático (pode corromper projetos) e eles abandonaram o suporte ao SVN, portanto você não deve usá-lo de qualquer maneira!)
  3. tente excluir a pasta da área de trabalho (conforme resposta aceita), mas apenas se for grande no disco
  4. ... qualquer outra coisa que você possa encontrar relacionada ao status de arquivos individuais

Xcode 4.4, 4.5:

Essas versões têm um grande vazamento de memória, um indexador de arquivos quebrado (mas melhor que 4.2 e 4.3) e talvez um problema de arquivo de troca particular.

Eventualmente, desabilitando / habilitando o espaço de troca ( como desabilitar ou habilitar a troca no mac os x ), e usar discos rígidos normais em várias máquinas, e executando experimentos em máquinas com 2 GB de RAM e 16 GB de RAM, descobri que o Xcode parece executar seu próprio espaço de troca, independente da troca do OS X (!).

(isso pode ser um erro - talvez exista uma forma extra de troca do OS X que eu não conheça - mas os arquivos de troca do sistema não ficaram maiores ou menores, enquanto o espaço em disco pulou por gigabytes para cima e para baixo em algumas máquinas)

Observado:

  1. O Xcode 4.4 / 4.5 ocupará aleatoriamente toda a memória RAM do seu sistema (10s de GB para um pequeno projeto), de modo que o restante do sistema fique parado, esperando a troca de disco

    1. Pior: em macbooks com SSDs, você não saberá que isso aconteceu
    2. Pior: ... mesmo que isso esteja danificando o seu disco rígido (os SSDs não gostam de escrever com golpes)
  2. O Xcode monitora o acesso ao disco rígido para que ele possa fazer sua indexação interna (quebrada) de arquivos. Quando a memória do sistema fica baixa e o OS X precisa fazer uma troca ... fica parado aguardando o Xcode indexar arquivos ... e o Xcode ocupa mais memória enquanto aguarda ... e: BOOM! em sistemas menores, o OS X eventualmente trava

  3. O Xcode não precisa de espaço de troca do OS X

O último é muito interessante. Se você tiver muita memória (por exemplo, 16 GB), tente desativar o espaço de troca permanentemente. O Xcode roda mais rápido, porque o OS X Lion possui alguns bugs no gerenciamento de memórias, onde é trocado mesmo quando não é necessário .

Se o xcode desacelerar repentinamente, ele estará trocando internamente; nesse ponto, você poderá simplesmente matá-lo e reiniciá-lo.

(se você tiver um SSD, a única maneira de saber se a troca começou é esperar que ele "fique mais lento". Caso contrário, você saberá assim que ouvir o HD thrash: não há mais nenhum arquivo de troca do sistema; única causa possível é o Xcode)

Você pode desativar com segurança a troca mesmo se tiver 2 GB de RAM (eu tive apenas uma falha do OS X por mês quando tentei isso, executei-o desta maneira por um ano), mas isso o impedirá de trabalhar com gráficos / vídeo de ponta com arquivos que precisam de vários gigabytes apenas para serem executados. Sinta-se livre para experimentá-lo por algumas semanas e ver o que acontece.

Mas ... reiniciar o Xcode sempre que diminui a velocidade faz maravilhas. Em máquinas com menos RAM, o arquivo de troca privado do Xcode parece ser excluído IMEDIATAMENTE quando você fecha (não parece acontecer em máquinas com muita memória RAM)

Adão
fonte
4

Nenhuma dessas respostas realmente melhorou o desempenho no meu caso (com o tempo, o Xcode 4.1 tornou-se pouco utilizável, deixando-o de vez em quando e ajudou-o).

No entanto, acabei de descobrir que, se eu continuar fechando todos os meus documentos (control-command-W), ele parecerá rápido. O Xcode mantém automaticamente todos os documentos nos quais você clica na memória, e você pode navegar entre eles com a seta esquerda / direita do controle-comando. Se você abrir acidentalmente muitas (principalmente janelas IB), ela será interrompida. Apenas fechar todos os documentos abertos de vez em quando parece aliviar isso sem a necessidade de uma reinicialização completa.

Dick
fonte
2

Todo mundo com esses problemas deve experimentar o Xcode 4.1 no Mac OS X Lion. Estou surpreso como muito mais rápido e responsivo é no mesmo hardware (MacBook Pro de 2,66 GHz Core 2 Duo com 4 GB de RAM aqui).

Suponho que eles tenham corrigido toneladas de erros de desempenho nesta versão.

Ricardo Sanchez-Saez
fonte
2
Ainda lento para mim em configurações semelhantes. (Xcode 4.1 e Mac OSX Lion no MacBook 2.26 GHz Intel Core 2 Duo, 2 GB RAM)
Andrei
1

Inicie os instrumentos com o modelo de perfil de tempo e conecte-o ao Xcode em execução (ou clang, llvm etc., se o problema ocorrer durante as compilações). Você poderá ver o problema rapidamente. Vi causas muito diferentes em máquinas diferentes. O controle de versão é frequentemente um culpado.

quellish
fonte
1

Estou enfrentando os mesmos problemas. Eles foram parcialmente corrigidos, pois as versões beta ainda são persistentes. Parece que o Xcode recebeu internamente um ou mais vazamentos que estão flutuando na sua memória. Você pode assistir muito bem a esse "recurso" bacana ao usar o Interface-Builder integrado. Duas soluções possíveis para rezar e preencher relatórios de erros para a apple:

  1. Não use o Builder interno, inicie o aplicativo externo.
  2. Saia do Xcode de tempos em tempos, isso deve liberar a memória que vazou.
Tim Specht
fonte
Eu adquiri uma nova placa gráfica iMac Mid 2011, 3,1 i5, 12gb Ram + 1gb de memória gráfica, os problemas não me incomodam muito aqui, mas antes de comprá-la, desenvolvi para um MacBook, apenas trabalhe máquina, vale a pena o dinheiro, confia em mim :)
Tim Specht
0

Eu tentei praticamente tudo o que foi sugerido neste tópico e em [vários] outros, e a única coisa que funcionou para mim foi "desativar" o subversion do projeto. Aqui está a parte ruim - a única maneira de "desabilitar" o plug-in SVN interno era frigir meu arquivo / etc / hosts com um endereço IP falso, causando efetivamente a falha de todo o acesso SVN.

Tentei remover / renomear o IDESubversion.ideplugin em / Developer / Library / Xcode / PrivatePlugIns, mas o Xcode 4.2.1 vomita e se recusa a iniciar.

Tentei remover meus repositórios SVN do Xcode todas as vezes que reinicio o Xcode, mas o Xcode falha em alguns minutos.

Tentei desativar o "Status remoto" em Arquivo-> Controle de origem-> Ocultar status remoto (não fez nada por mim).

Agora que defini meu nome de host SVN como 1.2.3.4 no arquivo de hosts, o Xcode funciona muito bem e não mostra o SBBOD quase toda vez que alterno entre arquivos.

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

Então, quando eu realmente quero fazer o controle de versão, tenho que remover o frig do arquivo hosts e usar o cmd line svn.

DustinB
fonte
Tente renomear a pasta /Applications/Xcode.app/Contents/PlugIns/IDESubversion.ideplugin, para algo com um final diferente. Eu usei um truque semelhante para desativar o plug-in Git.
John McFarlane
0

Você pode evitar a indexação do Xcode. Fazer isso melhorará o desempenho da memória do seu sistema, mas também impedirá o funcionamento de recursos do IDE, como o preenchimento automático e o salto para as definições.

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

Se você tiver um desempenho lento ao modificar um arquivo .xib com o construtor / editor de interface, vá em File Inspector para o .xib e desative o layout automático . Faça suas edições no arquivo .xib e, como etapa final, reative o layout automático e adicione ou ajuste restrições.

Sparky
fonte
0

Finalmente consegui que meu Xcode funcionasse normalmente, desativando o recurso git.

Emmy
fonte
0

No meu caso, foi o uso da RAM.

insira a descrição da imagem aqui

Tente matar algumas guias do Chrome ou aplicativos raramente usados.

Maciek Czarnik
fonte
0

Encontrei um truque para acelerar o desempenho de compilação do XCode 4: Quando você executa, compila ou realiza qualquer outro processamento no Xcode e ele interrompe o monitor ativo, selecione o processo do Xcode e clique no processo de amostra. Isso fará com que o processo se solte e volte a funcionar normalmente, o que permite criar o aplicativo em um tempo razoável.

william pagnon
fonte