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

128

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

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

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

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

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

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

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

Kzrbill
источник
Я сделал довольно длинную запись для Xcode 4.2 в этом посте: stackoverflow.com/questions/7780663/…
Джастин
1
Я нашел лучшее решение, чем все описанные здесь. Перешел на AppCode. Да, это было 99 долларов, но это было дешевле, чем покупка нового Mac. У меня MacBook Pro 2010 года выпуска. У него более быстрый процессор, чем у любого из MacBook Air, но здесь, в офисе, люди, использующие его, могут получить лучшую скорость. Я переустановил Lion, затем сделал чистую установку Mountain Lion, и все равно не повезло. Так что теперь я использую AppCode и снова счастлив.
HotFudgeSunday
1
Прискорбная ложь. AppCode даже медленнее, чем Xcode. Похоже на приложение Java. Он включает в себя множество причудливых автозавершений кода, авто # импорта и т. Д., Которые требуют фоновых процессов. Это может быть лучше для некоторых ситуаций, но не для предотвращения низкой производительности Xcode.
Гейб Рэйнбоу

Ответы:

161

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

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

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

Далее удалим project.xcworkspace.

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

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

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


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

sudo rm -rf
источник
удаление рабочего пространства помогло решить проблему, но я не думаю, что вам действительно нужно получить этот апплет, хехех,
Винсент Бак также
3
Ух ты - я рвала волосы из-за постоянных пляжных мячей, а теперь бегает как мечта. Спасибо за абсолютно важный совет. Стоит упомянуть, что он временно сбрасывает макет окна (что может быть или не быть очевидным), но это небольшая цена. Кроме того, если люди хотят вручную удалить файл рабочей области, они могут, удерживая нажатой клавишу Control, щелкнуть свой файл xcodeproj, выбрать «показать содержимое пакета», а затем удалить или переместить файл .xcworkspace.
Эрик Асмуссен
11
@sudo Невероятно, но теперь я потерял оправдание производительности и не могу купить себе новый, более быстрый MBP!?!
Daniel Blezek
У меня похожие проблемы с производительностью. На небольшой панели состояния в верхней средней части окна я вижу сообщение «Индексирование | обработано 0 из 1 файла» (цифры являются лишь примерами). Может ли это также способствовать снижению производительности?
milesmeow
3
Это ПЛОХОЙ совет - каталог xcworkspace содержит некоторые из основных файлов вашего проекта. В очень простом проекте эти файлы будут отсутствовать, и все будет хорошо, поэтому вы, вероятно, еще этого не осознавали. В сложных проектах - например, с общими исполняемыми файлами, общими схемами и т. Д. - вы испортите свой проект. см. вопрос .gitignore для получения подробной информации о том, КАКИЕ файлы внутри xcworkspace можно безопасно удалить, а какие нет! stackoverflow.com/questions/49478/…
Адам
46

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


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

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

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

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

Вы не можете указать Xcode хранить данные iPhone Simulator напрямую там, но вы можете создать папку на RAM-диске и создать символическую ссылку вместо каталога 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 работает как черт :). Надеюсь, это не реклама большого фруктового концерна, это просто отчет об опыте ...

benjamin.ludwig
источник
2
о, чувак .. это действительно здорово. но ВАЖНО: это сотрет ваши данные из симулятора ... вы потеряете все результаты теста, которые вы сделали до сих пор. так что спасибо за значительно более быструю сборку, но предупреждение было бы неплохим =)
Себастьян Флюкигер,
2
для всех, кто делает это, просто имейте в виду, что ЕСТЬ ОДИН ВЕЩЬ, КОТОРЫЙ ВЫ ХОТИТЕ СОХРАНИТЬ в папке производных данных, в файле символов. После развертывания приложения вы захотите сохранить в безопасном месте его файл символов на случай, если вы захотите выполнить отладку с помощью отчета о
сбое
1
@FranciscoGarcia Если вы развертываете приложение с помощью организатора xcode путем архивирования, то в архиве будут dSYM. Это хранится вне папки производных данных (по крайней мере, в текущей версии xcode - 4.6)
Дэнни Паркер
1
@imcaptor Вы можете использовать Automator для создания программы, выполняющей сценарий. В настройках вашей системы перейдите в «Пользователи и группы» -> «Элементы входа» и добавьте эту программу. Бьюсь об заклад, есть способ попроще, но этот работает
benjamin.ludwig
1
Путь ~ / Library / Application \ Support / iPhone \ Simulator больше не кажется правильным. Пожалуйста обновите.
davidcondrey
9

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

Greg
источник
7

Для меня Xcode значительно вырос в производительности после установки его для работы в 32-битном режиме (по умолчанию было 64). Это почти так же быстро, как и старый Xcode 3. Вы можете переключиться на 32-битный режим, щелкнув приложение правой кнопкой мыши (в /Developer/Applications/XCode.app ), выбрав « Получить информацию» и отметив « Открыть в 32-битном режиме» .

гёдзо кудор
источник
Для меня это не имело никакого значения на моем MBP 2.2Ghz i7 на 10.6.8. Какой у вас компьютер / ОС?
ettore 04
У меня Mac Mini с Intel Core 2 Duo 2.26 Ghz, 10.6.8, 2GB памяти.
gyozo kudor 05
7

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. ХУЖЕ: на MacBook с SSD вы не узнаете, что это произошло
    2. Худший: ... даже если это может повредить ваш жесткий диск (SSD не любят переписывать)
  2. Xcode получит доступ к жесткому диску, чтобы он мог выполнить (сломанную) внутреннюю индексацию файлов. Когда системной памяти становится мало, и OS X необходимо выполнить подкачку ... она застревает, ожидая, пока Xcode проиндексирует файлы ... и Xcode занимает больше памяти, пока ждет ... и: БУМ! на небольших системах OS X в конечном итоге зависает

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

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

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

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

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

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

Адам
источник
4

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

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

Дик
источник
2

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

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

Рикардо Санчес-Саес
источник
2
Все еще медленный для меня при подобной настройке. (Xcode 4.1 и Mac OSX Lion на MacBook Intel Core 2 Duo 2,26 ГГц, 2 ГБ ОЗУ)
Андрей
1

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

quellish
источник
1

У меня те же проблемы. Они были частично исправлены, поскольку бета-версии все еще существуют. Кажется, что Xcode внутренне получил одну или несколько утечек, которые несут вашу память. Вы можете очень хорошо наблюдать за этой изящной "особенностью" при использовании встроенного Interface-Builder. Два возможных решения помимо молитвы и заполнения отчетов об ошибках в Apple:

  1. Не используйте внутренний Builder, вместо этого запустите внешнее приложение.
  2. Время от времени выходите из Xcode, это должно освободить утечку памяти.
Тим Спехт
источник
У меня есть совершенно новый iMac Mid 2011, 3,1 i5, 12 ГБ оперативной памяти + 1 ГБ графической памяти, проблемы здесь меня не особо беспокоят, но до того, как я его купил, я разработал его на MacBook, просто получите рабочий машина, она стоит своих денег, поверьте мне :)
Тим Спехт
0

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

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

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

Я попытался отключить «Удаленный статус» через Файл-> Управление исходным кодом-> Скрыть удаленный статус (ничего не помогло).

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

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

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

DustinB
источник
Попробуйте переименовать папку /Applications/Xcode.app/Contents/PlugIns/IDESubversion.ideplugin во что-нибудь с другим окончанием. Я использовал похожий трюк, чтобы отключить плагин Git.
Джон Макфарлейн,
0

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

$ defaults write com.apple.dt.XCode IDEIndexDisable 1
davidcondrey
источник
0

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

Спарки
источник
0

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

Emmy
источник
0

В моем случае это было использование ОЗУ.

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

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

Мацек Чарник
источник
0

Я нашел способ повысить производительность компиляции XCode 4: когда вы запускаете, компилируете или выполняете любую другую обработку в Xcode, и он останавливает открытие активного монитора, выберите процесс Xcode, затем щелкните образец процесса. Это заставит процесс открепиться и снова запустится в обычном режиме, что позволит создать приложение в разумные сроки.

Уильям Паньон
источник