2016-10-17 5 views
0

Как профилировать и оптимизировать время компиляции C++ с помощью Xcode?Xcode - профиль и оптимизация времени компиляции C++

В настоящее время я работаю над проектом C++ Game на базе Cocos2d-x с 250+ исходными файлами. Время компиляции (без Cocos2d-x) в настоящее время составляет около 3,5 минут, и я хотел бы узнать, где компилятор тратит больше времени и что я могу сделать для его оптимизации.

Я уже делал самые очевидные вещи, как всегда, делая заявления вперед и применяю парадигму «Включить то, что вы используете».

Компилятор является последним Clang/LLVM из Xcode 8.

+0

Вы используете предварительно скомпилированные заголовки? Это дало мне коэффициент ускорения 4 в одном проекте, который я унаследовал без них. – gnasher729

ответ

2

Вы всегда можете попробовать CCache. Хорошо работайте внутри Xcode для меня, если я переопределю CC в настройках проекта. https://ccache.samba.org/

Так, например, установите ccache через brew install ccache. Затем сделать сценарий, который вы держите в системе управления версиями вашего проекта, который является чем-то вроде этого:

#!/bin/sh 
if type -p /usr/local/bin/ccache >/dev/null 2>&1; then 
    export CCACHE_CPP2=true 
    exec /usr/local/bin/ccache "${DEVELOPER_DIR}/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" "[email protected]" 
else 
    exec "${DEVELOPER_DIR}/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" "[email protected]" 
fi 

называют это «CCache-лязг», например. Хранение этого скрипта в исходном управлении вашего проекта означает, что вы можете проверить его на другом компьютере, на котором не установлен ccache, а затем он будет использовать только компилятор Clang по умолчанию.

Затем в Xcode, в разделе «Настройки сборки» для вашего проекта, добавьте «Пользовательский» параметр «CC», а затем - путь к вашему сценарию. «${PROJECT_DIR}/ccache-clang».

Эта статья - отличный ресурс для этого. https://pspdfkit.com/blog/2015/ccache-for-fun-and-profit/

+0

Но разве Xcode уже не делает этого? Где вы переопределили CC и какую ценность? Помогает ли это профилировать или оптимизировать? Пожалуйста, дайте немного больше информации о том, что именно вы делаете и чего добиваетесь;) – keyboard

+0

Xcode избегает повторного компиляции файлов, когда это возможно, но ccache фактически выполнит компиляцию из кеша на диске, поэтому даже чистая перестройка будет намного быстрее , Я добавил более подробные инструкции – yano

+0

Я установил его сейчас, и, похоже, он работает неплохо, но это не приносит действительно большого улучшения (пока). У меня есть кеш-хиты здесь и там, но большую часть времени он компилирует новые. Я также попытался сыграть с настройками из статьи. У вас есть дополнительные подсказки для меня? – keyboard

1

Попробуйте создать каталог /tmp/xcode_build_timings и перестройте свой проект. (Не забудьте удалить его позже).

+0

Это звучит интересно .... не могли бы вы быть более конкретными ? Что оно делает? Где именно должна быть папка и т. Д.? – keyboard

+0

Я указал точный путь для папки. Поэтому я не понимаю, что вы подразумеваете под «где именно должна быть папка»? Затем попробуйте создать свой проект после создания этой папки и проверить содержимое. Он должен предоставить время для сборки. – Joky

+0

Хорошо, имеет смысл. – keyboard

Смежные вопросы