Ho cercato di leggere lo MSDN pages sui vari flag di ottimizzazione.Flag di ottimizzazione di Visual Studio 2013 (/ O2 vs/Ox)
Attualmente la maggior parte dei nostri progetti è impostata su /O2
che ottimizza per "massimizzare la velocità".
La mia confusione è esattamente ciò che significa. Quale delle seguenti affermazioni è più vicina al vero per quanto riguarda il flag /O2
?
- ottimizzare il codice sia per la velocità e le dimensioni, ma se c'è conflitto preferiscono ottimizzazione per velocità
- Ottimizzare il codice solo per la velocità, non ottimizzare per dimensione.
Ho fatto l'argomento che dovremmo usare il flag /Ox
, ma quello era quando avevo l'impressione che l'Opzione 2 fosse vera.
Mi è stato detto in sostanza "non cambieremo da /O2
a /Ox
a meno che qualcuno non abbia prove concrete che dobbiamo farlo".
Quindi la mia domanda è /O2
eseguire ancora ottimizzazioni di memoria? Per esempio. ottimizzazione del valore di ritorno, copia elisione, ecc. Che cosa potremmo ottenere dal passaggio da /O2
a /Ox
?
La pagina/O2 menziona esplicitamente copy elision. E la pagina/Ox dice "In generale, specificare/O2 (Massimizza velocità) anziché/Ox e/O1 (Riduci dimensioni) anziché/Oxs." – Angew
L'ottimizzazione del valore di ritorno, la copia elisione ecc. Sono principalmente un'ottimizzazione * velocità *, direi. – Angew
dal tuo collegamento su/Ox "In generale, specifica/O2 (Massimizza velocità) anziché/Ox" – NathanOliver