2015-12-14 17 views
11

Qual è il modo migliore per valutare il valore minimo esatto dei parametri -fconstexpr-steps= e -ftemplate-depth= necessari per la compilazione di un programma?Benchmarking delle proprietà in fase di compilazione di un programma

Quello che faccio attualmente è una bisezione di un valore. Ma per i programmi caricati da modelli del mondo reale è diventato un'operazione molto lunga, pur essendo logaritmica sul limite superiore di un valore.

C'è l'opzione -v e -ftime-report, ma anche il loro output non fornisce alcuna informazione desiderata sulla profondità massima del template effettivamente utilizzata e il numero di passi effettivamente passati durante la valutazione delle espressioni costanti.

risposta

3

Si può vedere come Boost.Hana esegue il proprio benchmarking. Il suo codice di riferimento è scritto per lo più sotto forma di eRuby templates. I modelli vengono utilizzati per generare file C++ che vengono poi compilati durante la raccolta di statistiche di compilazione e esecuzione.

Bisection per trovare i valori necessari di -ftemplate-depth e -fconstexpr-steps è ovviamente un po 'macchinoso da fare a mano, ma si potrebbe anche scrivere uno script (Ruby, Python, qualunque cosa faccia galleggiare la propria barca) per automatizzare questo. Basta raddoppiare il valore iniziale in un semplice ciclo while fino a quando il programma non viene compilato correttamente.

Problemi correlati