# Performances

[Les accès mémoire](https://cours-cpp.gitbook.io/resources/performances/les-acces-memoire) va expliquer :

* Les cache lines
* La pile et le tas
* Les allocateurs
* L'alignement en mémoire

[Les options du compilateur](https://cours-cpp.gitbook.io/resources/performances/les-flags-de-compilateur) va couvrir :

* Les options générales
* La Link-Time Optimization
* L'optimisation ciblant une architecture
* La Profile-Guided Optimization

[Les indices au compilateur](https://cours-cpp.gitbook.io/resources/performances/les-indices-au-compilateur) va aborder :

* Les attributs standards
* Les prédictions de branches
* \_\_builtin\_expect(value, expected)
* Le *strict aliasing*
* Le mot-clé *restrict*
* Des attributs non-standards
* D'autres instructions (unreachable, assume)

[La vectorisation](https://cours-cpp.gitbook.io/resources/performances/la-vectorisation) va se baser sur [un exemple](https://godbolt.org/g/M8Eqe2) pour parler :

* Des instructions SIMD
* Des optimisations possibles pour la vectorisation

Le temps de compilation va présenter :

* Les principaux facteurs de ralentissement
* Les *forward declarations*
* Le pattern *Pointer to Implementation* (pimpl)
* Quelques solutions de compilateurs et systèmes de build
