Где я должен хранить файлы базы данных PGO?
Я изучал использование профильной оптимизации в Visual C++ 2013. Я доволен выполнением обучающего набора с использованием различных сценариев в качестве ручного шага, но хотел бы, чтобы окончательная оптимизированная сборка и ссылка работали на нашем сервере сборки CI.
Учитывая это, где мне лучше всего хранить базы данных профиля PGO? Хранить их в системе управления версиями (в нашем случае Git) - это наиболее удобное место, но я знаю, что они представляют собой двоичные файлы порядка десятков, а то и сотен мегабайт, и они не обязательно будут хорошо храниться в источнике. система контроля.
В качестве альтернативы, есть ли лучшее решение или лучшие практики для интеграции PGO в наши автоматизированные сборки?
2 ответа
Нашим решением было хранить файлы PGO с использованием Git LFS (см. Также этот вопрос).
Преимущества этого подхода:
- Базы данных PGO живут в хранилище вместе с версией кода, с которой они связаны
- Базы данных полностью и без проблем доступны для машин разработки, сборки и тестирования без настройки внешнего хранилища файлов.
- Большие двоичные файлы не хранятся в обычном Git-репозитории, поэтому они не будут раздуваться или утомлять слияния.
Единственное незначительное осложнение этого подхода, которое не оказало на нас существенного влияния, заключается в том, что все машины и программное обеспечение должны поддерживать и устанавливать Git LFS, от рабочих станций разработки до серверов CI.
У вас есть несколько вариантов здесь, вы можете выбрать один из них с учетом компромиссов.
- Используете ли вы PGO для всей базы кода, или для некоторых горячих точек или модулей? Как часто вы обновляете базы данных.
- Это огромная проблема для выпуска sth с неподходящими базами данных PGO.
- Насколько велик ваш проект и насколько велик он может быть в худшем случае
- Допустимо ли хранить базы данных PGO в системе контроля версий в этом худшем случае.
Через ваши ответы вы можете создать маршрут для себя.
Если вы не обновляете базы данных PGO слишком часто и если двоичные размеры не разрушают ваш проект, вы можете хранить их в системе контроля версий.
Если вы регенерируете их для каждого коммита, вы можете поместить их в отдельный репозиторий, который включает в себя реальный код фиксации баз кода (для которого созданы базы данных профилей коммитов PGO) в виде сообщения фиксации.
Или, если вы не генерируете их слишком часто, и когда вы возвращаетесь к определенному коммиту, вполне нормально, чтобы восстановить базы данных, вы не можете их хранить, просто поместите в машину сборки CI.
Или вы можете сделать другую комбинацию вокруг этого мнения:)