Xcode 4 - низкая производительность

У меня есть проблема с Xcode 4, которая действительно очень медленно реагирует на взаимодействие с пользователем, например, редактирование кода, прокрутка областей и т. Д. Это особенно происходит с крупномасштабными проектами со многими контроллерами / файлами просмотра и т. Д.

Я полностью вытер жесткий диск и переустановил Snow Leopard и Xcode на прошлой неделе, но постепенно это привело к разочаровывающему времени отклика (через несколько дней), значительно нарушившему рабочий процесс.

Я также иногда удалял "производные данные" проекта через Организатор -> Проекты, и это оказало небольшое влияние.

Мне интересно, есть ли что-нибудь, что я могу сделать, чтобы улучшить производительность, кроме как получить машину с более высокими характеристиками в первую очередь.

К сведению, я использую MacBook с процессорами Intel Core 2 Duo с тактовой частотой 2 ГГц и 4 ГБ оперативной памяти.

В случае необходимости обновления, я также хотел бы знать, испытывают ли люди эту низкую производительность от Xcode 4 на машинах с хорошими характеристиками (что сделало бы обновление нашего оборудования довольно бессмысленным, поскольку только у Xcode есть проблемы с производительностью на MacBook).

Если у кого-то есть какие-либо предложения или рекомендации, или он может даже сообщить нам, как улучшенное аппаратное обеспечение влияет на производительность Xcode на более крупные деревья проекта, это было бы чрезвычайно полезно, а также ценным ресурсом для других разработчиков в аналогичной позиции.

17 ответов

Решение

Если вы удаляете файл рабочей области, это помогает ускорить его.

Во-первых, убедитесь, что Xcode не открыт. Теперь найдите файл вашего проекта. Щелкните правой кнопкой мыши и выберите Show Package Contents,

Затем удалите project.xcworkspace,

Откройте XCode и наслаждайтесь более быстрой производительностью!

Спасибо: http://meachware.blogspot.com/2011/06/speed-up-xcode-4.html


Изменить: я получил несколько комментариев об этом, отмечая, что для некоторых проектов это может вызвать проблемы. Убедитесь, что у вас есть резервная копия вашего проекта, прежде чем выполнять эти шаги, и не забудьте проверить и протестировать ваш проект впоследствии. Убедитесь, что у вас есть все ваши исполняемые файлы и схемы.

ВАЖНОЕ ОБНОВЛЕНИЕ: пути изменены для Xcode 6 (спасибо за комментарий dcc)! Я просто добавил альтернативный способ.


Есть еще один приятный способ закрепить сборки, создав RAM-диск со следующей строкой кода:

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

Это создает образ диска в памяти размером около 4 ГБ. Но будьте осторожны, вам нужно иметь достаточно памяти. Конечно, вы можете создать уменьшенное изображение, например, 2 ГБ (это будет 4237927).

Затем вы говорите Xcode для хранения производных данных там введите описание изображения здесь

Вы не можете указать Xcode хранить данные iPhone Simulator напрямую, но вы можете создать папку на виртуальном диске и создать символическую ссылку вместо каталога iPhone Simulator, выполнив это:

Xcode 6:

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

Старые версии 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

Если я соберу симулятор с этой настройкой, он быстро заработает:)

Помните, что RAM-диск исчезнет, ​​когда вы перезагрузите компьютер, поэтому было бы неплохо создать скрипт или что-то, что запускается при запуске. И НЕ РАЗМЕЩАЙТЕ ДАННЫХ, КОТОРЫЕ ВЫ ХОТИТЕ СОХРАНИТЬ!!!

ОБНОВЛЕНИЕ 2013-03-12:

  1. Прочитайте комментарий от Франциско Гарсиа ниже!

  2. С моим новым MBP (содержащим SSD-накопитель) мне больше не нужен этот метод. XCode работает как ад:). Я надеюсь, что это не воспринимается как реклама для большого фруктового концерна, это просто отчет об опыте...

Отключение текущих вопросов в общих настройках внесло определенные изменения. Я также настраиваю схему без включенного gdb для ситуаций, когда я часто перезагружаюсь (ни один gdb не ускоряет запуск совсем).

Я не знаю, помогает ли это кому-нибудь, но для меня XCode значительно увеличил производительность после настройки его работы в 32-битном режиме (по умолчанию 64). Это почти так же быстро, как и старый xcode 3. Вы можете переключиться на 32-битную версию, щелкнув правой кнопкой мыши приложение (в /Developer/Applications/XCode.app) и выбрав " Get Info" и выбрав " Open" в 32-битном режиме.

Xcode 4.2, 4.3:

Основные проблемы с индексатором файлов (тот же код, который запускает Spotlight, который глючил годами? Вероятно).

Отключите все несущественное, что связано с "просмотром" файлов:

  1. Быстрая справка (NB: никогда не нажимайте на вкладку QH! Даже скрытие помощника по-прежнему приводит к запуску кода! Переключитесь на другую вкладку перед переходом на новый файл...)
  2. Управление SCM (SVN, Git и т. Д. - поддержка git в Xcode все еще немного глючит (может испортить проекты), и они отказались от поддержки SVN, так что вам все равно не следует ее использовать!)
  3. попробуйте удалить папку рабочей области (согласно принятому ответу), но только если она большая на диске
  4. ... все остальное, что вы можете найти, связанное со статусом отдельных файлов

Xcode 4.4, 4.5:

Эти версии имеют серьезную утечку памяти, поврежденный индексатор файлов (но лучше, чем 4.2 и 4.3) и, возможно, проблему с частным файлом подкачки.

В конце концов, отключив / включив пространство подкачки ( как отключить или включить подкачку в Mac OS X), используя обычные жесткие диски на нескольких компьютерах, а также проведя эксперименты на компьютерах с 2 ГБ ОЗУ до 16 ГБ ОЗУ, я обнаружил, что Xcode кажется, запускает свое собственное пространство подкачки, независимое от подкачки OS X (!).

(это может быть ошибкой - может быть, есть дополнительная форма подкачки OS X, о которой я не знаю - но файлы подкачки системы не становились больше или меньше, в то время как на некоторых машинах дисковое пространство перепрыгивало гигабайтами вверх и вниз)

Наблюдаемый:

  1. Xcode 4.4 / 4.5 случайным образом займет всю оперативную память в вашей системе (10 ГБ для крошечного проекта), так что остальная часть системы остановится, ожидая замены диска

    1. МИР: на macbooks с SSD вы не узнаете, что это произошло
    2. WORST: ... даже если это может повредить ваш жесткий диск (SSD не любит перебивать записи)
  2. Xcode захочет получить доступ к жесткому диску, чтобы он мог выполнять свою (поврежденную) внутреннюю индексацию файлов. Когда системная память заканчивается, и OS X нуждается в обмене... он застревает в ожидании Xcode для индексации файлов... и Xcode занимает больше памяти, пока он ждет... и: BOOM! в небольших системах OS X в конце концов зависает

  3. Xcode не нуждается в пространстве подкачки OS X

Последнее очень интересно. Если у вас много памяти (например, 16 ГБ), попробуйте отключить пространство подкачки навсегда. Xcode работает быстрее, потому что OS X Lion имеет некоторые ошибки в управлении mem, где он переставляет, даже когда в этом нет необходимости.

Если xcode внезапно замедляется, то происходит внутренняя перестановка, после чего вы можете просто убить и перезапустить его.

(если у вас есть твердотельный накопитель, единственный способ узнать, начал ли он подкачку, - это дождаться, пока он "замедлится". В противном случае, вы узнаете, как только услышите трэш HD: системного файла подкачки больше нет, поэтому единственная возможная причина - Xcode)

Вы можете безопасно отключить подкачку, даже если у вас 2 ГБ ОЗУ (у меня был только один сбой OS X в месяц, когда я пробовал это, запускал его таким образом в течение года), но это остановит вас при выполнении высококачественной видео / графической работы с файлами которые нуждаются в нескольких гигабайтах только, чтобы бежать. Не стесняйтесь попробовать это в течение нескольких недель и посмотрите, что произойдет.

Но... перезапуск Xcode всякий раз, когда он замедляется, творит чудеса. На машинах с меньшим объемом ОЗУ приватный файл подкачки XCode, похоже, НЕМЕДЛЕННО удаляется при закрытии (на компьютерах с большим количеством ОЗУ этого не происходит)

Ни один из этих ответов действительно не улучшил производительность в моем случае (со временем Xcode 4.1 стал почти непригодным для использования, только выход из него то и дело помог).

Тем не менее, я только что узнал, что если я продолжу закрывать все свои документы (control-command-W), то, похоже, будет работать быстро. Xcode автоматически сохраняет все документы, которые вы нажимаете, в памяти, и вы можете перемещаться между ними с помощью управляющей команды влево / вправо. Если вы случайно откроете слишком много (особенно окон IB), оно остановится. Простое закрытие всех открытых документов время от времени, кажется, облегчает это без необходимости полного перезапуска.

Всем, кто испытывает эти проблемы, следует попробовать Xcode 4.1 на Mac OS X Lion. Я удивлен, насколько быстрее и отзывчивее он работает на одном и том же оборудовании (MacBook Pro с тактовой частотой 2,66 ГГц Core 2 Duo и 4 ГБ оперативной памяти).

Я предполагаю, что они исправили тонны ошибок производительности в этом выпуске.

Следующий пост @lukasz немного помог, особенно его пункт № 8 в его ответе (Закрытая панель утилит и Панель быстрой справки)

Xcode 4 стал очень медленным и убивает мой жесткий диск

Я сталкиваюсь с теми же проблемами, которые были частично исправлены с момента сборки бета-версии, но все еще сохраняются. Кажется, что Xcode внутренне получил одну (или более...) утечку, которая наполняет вашу память, вы можете очень хорошо наблюдать эту изящную "особенность" при использовании встроенного Интерфейсного Строителя. Два возможных решения для молитвы и заполнения отчетов об ошибках для яблока:

  1. Не используйте внутренний Builder, вместо этого запустите внешнее приложение
  2. Время от времени выходите из Xcode, это должно освободить просочившуюся память

Извините, но я думаю, что нет лучших решений....:/

Запустите инструменты с шаблоном временного профиля и прикрепите его к работающему Xcode (или clang, llvm и т. Д., Если ваша проблема во время сборки). Вы должны быть в состоянии увидеть проблему довольно быстро. Я видел очень разные причины на разных машинах. Контроль версий часто является виновником.

Здесь много хороших предложений, я решил свою проблему, отключив снимки, как описано здесь:

Редактирование раскадровки в Xcode 5 очень медленное

Я нашел способ повысить производительность компиляции XCode 4:

Когда вы запускаете, компилируете или выполняете любую другую обработку в xcode, и он останавливает активный монитор и выбирает процесс xcode, затем нажимаете на образец процесса. Это заставит процесс отвязаться и снова работать как обычно, что позволит собрать приложение за разумное время. По крайней мере, это работает для меня.

Будет

Если у вас низкая производительность при изменении файла.xib с помощью конструктора / редактора интерфейса, перейдите в "Инспектор файлов" для файла.xib и отключите автоматическую компоновку. Внесите изменения в файл.xib, затем в качестве последнего шага снова включите автоматическую компоновку и добавьте или настройте ограничения.

Наконец-то я получил нормальную работу своего xcode, отключив функцию git.

Я перепробовал практически все, что было предложено в этой теме и [множество] других, и единственное, что мне помогло, - это "отключить" подрывную деятельность для проекта. Вот дерьмовая часть - ЕДИНСТВЕННЫЙ способ, которым я мог "отключить" встроенный плагин SVN, состоял в том, чтобы залить мой файл / etc / hosts с поддельным IP-адресом, фактически приводя к сбою доступа к SVN.

Я попытался удалить / переименовать IDESubversion.ideplugin в /Developer/Library/Xcode/PrivatePlugIns, но Xcode 4.2.1 рвется и отказывается запускаться.

Я пытался удалить свои репозитории SVN из XCode каждый раз, когда я перезапускаю XCode, но XCode падает в течение нескольких минут.

Я попытался отключить "Remote Status" через File->Source Control->Hide Remote Status (ничего не сделал для меня).

Теперь, когда я установил для моего имени хоста SVN 1.2.3.4 в моем файле hosts, Xcode отлично работает и не показывает SBBOD почти каждый раз, когда я переключаюсь между файлами.

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

Затем, когда я действительно хочу сделать контроль версий, мне нужно отключить файл hosts и использовать команду cmd line svn.

Вы можете избежать индексации XCode. Это улучшит производительность памяти вашей системы, но также предотвратит работу таких функций IDE, как автозаполнение и переход к определениям.

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

В моем случае это было использование оперативной памяти.

введите описание изображения здесь

Попробуйте убить несколько вкладок Chrome или редко используемых приложений. Это должно помочь!

Другие вопросы по тегам