Domanda

Sto cercando di trovare informazioni su glibc e in che misura utilizza la funzionalità SSE.

Se è ottimizzato, posso usarlo immediatamente?

Dire che sto usando una delle più grandi distro Linux, presumo che il suo glibc sia compilato per essere il più generico possibile e per essere il più portatile possibile, quindi non ottimizzato?

Sono particolarmente interessato alle funzioni memcpy e memcmp e a come ottenere queste funzioni il più velocemente possibile.

È stato utile?

Soluzione

glibc 2.8 non usa affatto SSE per memcpy o memcmp (in x86 o x86_64) - usa un assemblaggio scritto a mano che evita qualsiasi cosa non supportata su tutte le CPU della famiglia. In glibc 2.10, verrà supportato un nuovo tipo di trasferimento, STT_GNU_IFUNC , che consentirà di ottimizzare le ottimizzazioni in base sul supporto CPU possibile.

Altri suggerimenti

Se si compila con le impostazioni di ottimizzazione più elevate, memcpy e memcmp potrebbero essere sostituiti con intrinseci dal compilatore e non chiamare mai glibc. Quindi le opzioni del compilatore mcpu e marzo selezioneranno il codice più veloce.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top