So che è molto tardi per la festa, ma il tempo cambia e le risposte rimangono in giro. C ++ 11 presenta cambiamenti piuttosto ampi, molti dei quali aumentano le prestazioni del C ++ e della libreria standard. Sembra che coloro che non usano STL o Boost, tendano a non tenere il passo con i nuovi standard, lasciando le soluzioni filate a casa prive di importanti miglioramenti, ovviamente non è sempre così.
Ho usato STL su tutti i progetti dalla metà degli anni '90 ad oggi, ad eccezione di un breve periodo presso EA. Penso che il lato anti-STL avesse delle ragioni marginalmente razionali per non usarlo. Quelli sono in gran parte spariti. Gli allocatori personalizzati sono una soluzione, l'utilizzo di reserve è un'altra e non passare le cose in base al valore è un terzo, ma questi sono piuttosto semplici e qualsiasi programmatore dovrebbe saperli. Ancora più importante è l'uso di algoritmi. Gli autori di compilatori sanno esattamente cosa fa un for_each () e possono ottimizzare il codice. Ciò non può accadere con un ciclo home rolled. for_each () su un oggetto const è ancora meglio. Microsoft ottimizza for_each in molti modi, inclusa la serializzazione. Hanno anche la libreria AMP che ha parallel_for_each (). Se ne hai la possibilità, parla con gli ingegneri del compilatore. I compilatori di console ottimizzeranno ciò che viene utilizzato, quindi un po 'di problema con pollo e uova. Microsoft sta andando molto pesante con C ++ 11 e il prossimo XBox non sarà diverso. Non ho idea di PS4, non ne abbiamo ancora uno.
Gli allocatori personalizzati sono un modo per gestire il problema di memoria, ma un'altra opzione (spesso trascurata) è quella di utilizzare il nuovo ed elimina basato sulla classe. In questo modo si possono ottenere enormi aumenti delle prestazioni.
L'idea che Boost e STL abbiano una visione ristretta della risoluzione dei problemi è pura follia. Sono sbalordito da quante cose in STL e Boost sono personalizzabili attraverso tratti e politiche. Cerca un confronto tra maiuscole e minuscole come esempio.
Per quanto riguarda i tempi di collegamento lunghi e il bloat del codice, il nuovo modello extern dovrebbe aiutare in questo. Generalmente trovo che i tempi di compilazione lunghi derivino dall'accoppiamento eccessivo e dall'uso improprio di pch.
Il motivo più convincente per utilizzare STL su homespun è che ci sono milioni di persone che possono aiutarti con l'STL. Come sempre, non ottimizzare prematuramente e testare, testare, testare.