функциональность glibc и SSE
-
06-07-2019 - |
Вопрос
Я пытаюсь найти информацию о glibc и в какой степени он использует функциональность SSE.
Если он оптимизирован, могу ли я использовать его «из коробки»?
Скажем, я использую один из более крупных дистрибутивов Linux, и я предполагаю, что его glibc скомпилирован так, чтобы быть как можно более универсальным и максимально переносимым, а следовательно, не оптимизированным? Р>
Меня особенно интересуют функции memcpy и memcmp и как получить эти функции как можно быстрее.
Решение
glibc 2.8 вообще не использует SSE для memcpy или memcmp (в x86 или x86_64) - он использует некоторую рукописную сборку, которая позволяет избежать всего, что не поддерживается всеми процессорами семейства. В glibc 2.10 будет поддерживаться новый тип перемещения, STT_GNU_IFUNC , который будет улучшать оптимизацию на основе возможна поддержка ЦП.
Другие советы
Если вы компилируете с самыми высокими настройками оптимизации, memcpy и memcmp могут быть заменены встроенными компиляторами и никогда не вызывать glibc вообще. Затем параметры компилятора mcpu и march выберут самый быстрый код.