2015-12-14 5 views
11

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

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

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

ответ

3

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

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

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