Question

J'essaie de trouver des informations sur la glibc et dans quelle mesure elle utilise la fonctionnalité SSE.

S'il est optimisé, puis-je l'utiliser tel quel?

Disons que j’utilise l’une des plus grandes distributions Linux, je suppose que sa glibc est compilée de manière à être aussi générique que possible et aussi portable que possible, donc non optimisée?

Je suis particulièrement intéressé par les fonctions memcpy et memcmp et par la manière de les obtenir le plus rapidement possible.

Était-ce utile?

La solution

La glibc 2.8 n’utilise pas du tout SSE pour memcpy ou memcmp (en x86 ou x86_64). Elle utilise un assemblage écrit à la main qui évite tout ce qui n’est pas supporté par tous les processeurs de la famille. Dans la glibc 2.10, un nouveau type de relocalisation, STT_GNU_IFUNC , sera pris en charge, ce qui permettra de meilleures optimisations en fonction sur le soutien du processeur possible.

Autres conseils

Si vous compilez avec les paramètres d'optimisation les plus élevés, memcpy et memcmp peuvent être remplacés par des éléments intrinsèques par le compilateur et ne jamais appeler glibc du tout. Ensuite, les options du compilateur mcpu et march sélectionneront le code le plus rapide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top