Бенчмаркинг времени компиляции программы

Каков наилучший способ оценить точное минимальное значение параметров -fconstexpr-steps= и -ftemplate-depth=, необходимых для компиляции программы?

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

Существует опция -v и -ftime-report, но даже их вывод не дает никакой желаемой информации о максимальной глубине используемого шаблона и количестве шагов, фактически пройденных при оценке постоянных выражений.

Ответ 1

Вы можете посмотреть, как Boost.Hana делает свой бенчмаркинг. Его базовый код написан в основном в виде шаблонов eRuby. Шаблоны используются для создания файлов на С++, которые затем скомпилируются при сборе статистики компиляции и выполнения.

Для поиска необходимых значений -ftemplate-depth и -fconstexpr-steps, конечно, немного громоздко сделать вручную, но вы также можете написать script (Ruby, Python, независимо от того, что плавает ваша лодка), чтобы автоматизировать эту, Просто удвоьте начальное значение в простом цикле while, пока программа не будет успешно скомпилирована.