• # À bas COW, vive SSO!

    Posté par (site web personnel) . En réponse à la dépêche Le compilateur GCC 5.1 : harder, better, faster, stronger. Évalué à 8.

    J'attends ce changement d'implémentation de std::string avec impatience. L'optimisation précédente, qui était d'utiliser de la copie sur écriture, était de moins en moins efficace dans les applications lourdement parallèles tournant sur des serveurs à grand nombre de cœurs, car il faut acquérir des mutex (cher!) et faire des barrières mémoire pour flusher les caches de chaque cœur (très cher!) tout le temps.

    Avec la nouvelle optimisation SSO (pour "short string optimisation", optimisation des petites chaînes), l'idée est que l'on peut encoder les chaines courtes au sein même de la structure de chaîne, en utilisant l'emplacement mémoire du pointeur pour y mettre ses caractères. Tant que la chaîne est plus petite que la longueur du pointeur, on y met directement les données, dès qu'elle est plus grande, cette zone mémoire redevient un pointeur vers un emplacement sur le tas. Copier des petites chaînes devient alors très bon marché. Ça tombe bien, bon nombre de programmes passent un temps formidable à copier des petites chaînes.

    J'ai commencé à recenser les bibliothèques tierces utilisées par notre système. Dès que nos amis de chez Red Hat nous sortent un Developer Toolkit avec g++ 5.1, je recompile tout!