Профилирование GPRBuild

У меня большой проект на основе георадара, который может занять более 30 минут для компиляции.

Проанализировав процесс сборки, я заметил много очевидных недостатков (многократные обращения к gprbuild, а не к агрегатам, чрезмерное использование альтернативных файлов вместо конфигураций и т. Д.). Мне интересно, есть ли какие-то средства для "профилирования" процесса сборки, чтобы увидеть, что занимает так много времени.

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

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

Таким образом, мой вопрос: возможно ли профилировать сборку, выполненную gprbuild? Если так, то как?

1 ответ

Решение

От низкой до высокой сложности:

  • Просить gprbuild сообщить более подробную информацию о том, что он делает с флагом -vh,
  • Бежать gprbuild через strace,
  • перестраивать gprbuild с необходимыми флагами, чтобы профилировать его с помощью gprof (но учтите, что gprof не всегда говорит правду).
Другие вопросы по тегам