Вопрос

Я пытаюсь найти информацию о 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 выберут самый быстрый код.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top