2015-12-14 18 views
11

Jaki jest najlepszy sposób oceny dokładnej minimalnej wartości parametrów -fconstexpr-steps= i -ftemplate-depth= wymaganych do kompilacji programu?Benchmarking właściwości kompilacji programu

Co obecnie robię, to bisekcja wartości. Ale w przypadku programów ładowanych szablonami rzeczywistymi stała się bardzo długa, a nawet logarytmiczna w górnym limicie wartości.

Dostępne są opcje -v i -ftime-report, ale nawet ich dane wyjściowe nie zawierają żadnych pożądanych informacji o rzeczywistej maksymalnej głębokości szablonu i liczbie kroków faktycznie przekazanych podczas oceny wyrażeń stałych.

Odpowiedz

3

Możesz sprawdzić, jak Boost.Hana dokonuje analizy porównawczej. Jego kod testu porównawczego jest napisany głównie w formie eRuby templates. Szablony służą do generowania plików C++, które są następnie kompilowane podczas zbierania statystyk kompilacji i wykonywania.

Bisekcja, aby znaleźć niezbędne wartości -ftemplate-depth i -fconstexpr-steps jest oczywiście trochę uciążliwa, ale można również napisać skrypt (Ruby, Python, cokolwiek pływa na twojej łodzi), aby zautomatyzować to. Wystarczy podwoić początkową wartość w prostej pętli while, aż program pomyślnie się skompiluje.