2012-05-13 17 views
6

Ich muss zwei Zeichenfolge auf der Maschine mit SSE4-Unterstützung schnell vergleichen. Wie kann ich es tun, ohne Assembler-Einsätze zu schreiben?Vergleichen Sie Zeichenfolgen mit SSE4-Wrapper

Einige Wrapper wie long long bitmask = strcmp(char* a, char* b) wäre perfekt.

+0

kann es auf den Compiler (einschließlich der Version) und die verwendeten Flags abhängen. Wenn du 'gcc-4.7' benutzt hast, hast du' -mcpu = native -O3' usw. versucht? –

+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" gibt eine Menge Ergebnisse mit fertig gemacht Assemblercode. Sie können versuchen, diese in C zu übersetzen, indem Sie intrinsic verwenden. Habe Spaß. – hirschhornsalz

Antwort

0

Verwenden Sie Agner Fogs Asmlib. http://www.agner.org/optimize/#asmlib

Er hat sich bereits die Mühe gemacht, den Code in die Assembly für Sie zu schreiben, einschließlich SSE4.2-Anweisungen. Verwenden Sie seine Funktion A_strcmp (oder die case insensitive Version A_stricmp).

Es wäre interessant, wie eine Methode mit intrinsics in der Leistung vergleicht.

Verwandte Themen