2012-05-13 13 views
6

Ho bisogno di confrontare rapidamente due string sulla macchina con supporto SSE4. Come posso farlo senza scrivere inserti assembler?Confronto stringhe con i wrapper SSE4

Alcuni involucri come long long bitmask = strcmp(char* a, char* b) sarebbero perfetti.

+0

potrebbe dipendere dal compilatore (inclusa la versione) e dai flag utilizzati. Se usi 'gcc-4.7' hai provato' -mcpu = native -O3' ecc.? –

+1

http://software.intel.com/sites/products/documentation/studio/composer/en-us/2011/compiler_c/intref_cls/common/intref_sse42_comp.htm – Mysticial

+0

Googling "sse4 strcmp" offre molti risultati con ready made codice assemblatore. Puoi provare a tradurli in C usando intrinseche. Divertiti. – hirschhornsalz

risposta

0

Usa asmlib di Agner Fog. http://www.agner.org/optimize/#asmlib

Ha già preso la briga di scrivere il codice in assembly per voi compreso l'utilizzo delle istruzioni SSE4.2. Usa la sua funzione A_strcmp (o la versione senza distinzione tra maiuscole e minuscole A_stricmp).

Sarebbe interessante quindi come un metodo che utilizza l'intrinseco paragoni in termini di prestazioni.