Где я должен хранить файлы базы данных PGO?

Я изучал использование профильной оптимизации в Visual C++ 2013. Я доволен выполнением обучающего набора с использованием различных сценариев в качестве ручного шага, но хотел бы, чтобы окончательная оптимизированная сборка и ссылка работали на нашем сервере сборки CI.

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

В качестве альтернативы, есть ли лучшее решение или лучшие практики для интеграции PGO в наши автоматизированные сборки?

2 ответа

Решение

Нашим решением было хранить файлы PGO с использованием Git LFS (см. Также этот вопрос).

Преимущества этого подхода:

  • Базы данных PGO живут в хранилище вместе с версией кода, с которой они связаны
  • Базы данных полностью и без проблем доступны для машин разработки, сборки и тестирования без настройки внешнего хранилища файлов.
  • Большие двоичные файлы не хранятся в обычном Git-репозитории, поэтому они не будут раздуваться или утомлять слияния.

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

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

  • Используете ли вы PGO для всей базы кода, или для некоторых горячих точек или модулей? Как часто вы обновляете базы данных.
  • Это огромная проблема для выпуска sth с неподходящими базами данных PGO.
  • Насколько велик ваш проект и насколько велик он может быть в худшем случае
  • Допустимо ли хранить базы данных PGO в системе контроля версий в этом худшем случае.

Через ваши ответы вы можете создать маршрут для себя.

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

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

Или, если вы не генерируете их слишком часто, и когда вы возвращаетесь к определенному коммиту, вполне нормально, чтобы восстановить базы данных, вы не можете их хранить, просто поместите в машину сборки CI.

Или вы можете сделать другую комбинацию вокруг этого мнения:)

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