функциональность glibc и SSE

Я пытаюсь найти информацию о glibc и о том, в какой степени он использует функциональность SSE.

Если он оптимизирован, могу ли я использовать его «из коробки»?

Скажем, я использую один из больших дистрибутивов Linux, я предполагаю, что его glibc скомпилирован, чтобы быть как можно более универсальным и максимально переносимым, следовательно, не оптимизированным?

Меня особенно интересуют функции memcpy и memcmp и то, как получить эти функции как можно быстрее.


person psyeugenic    schedule 06.05.2009    source источник


Ответы (2)


glibc 2.8 вообще не использует SSE для memcpy или memcmp (в x86 или x86_64) - он использует некоторую рукописную сборку, которая позволяет избежать всего, что не поддерживается на всех процессорах семейства. В glibc 2.10 будет поддерживаться новый тип перемещения, STT_GNU_IFUNC, который улучшит оптимизацию на основе возможна поддержка процессора.

person bdonlan    schedule 06.05.2009

Если вы компилируете с самыми высокими настройками оптимизации, memcpy и memcmp могут быть заменены компилятором внутренними функциями и вообще никогда не вызывать glibc. Затем параметры компилятора mcpu и march выберут самый быстрый код.

person florin    schedule 06.05.2009