10

Intel が文字列処理を高速化するために導入したことをここで読みました。SSE 4.2 instructions

記事からの引用:

Intel の Core i7 で最初に実装された SSE 4.2 命令セットは、文字データを処理するために SIMD 操作を利用する文字列およびテキスト処理命令 (STTNI) を提供します。当初は文字列、テキスト、および XML 処理を高速化するために考案されましたが、これらの命令の強力な新機能は、これらの領域の外でも役立ちます。STTNI を利用してパフォーマンスを向上させるには、多数のアプリケーションの検索および認識段階を再検討する価値があります。

  • 利用可能な場合、gcc はこれらの命令を利用しますか?
  • もしそうなら、どのバージョンですか?
  • そうでない場合、これを提供するオープン ソース ライブラリはありますか?
4

2 に答える 2

4

ソフトウェア ライブラリに関しては、Agner Fog の asmlib を調べます。アセンブリで最適化された SSE4.2 を使用するいくつかの文字列操作ルーチンを含む、多くのルーチンのコレクションがあります。各レベルのキャッシュ サイズやサポートされている拡張機能 (SSE4.2 など) など、CPU に関する戻り情報を使用するその他の便利な関数を提供します。

http://www.agner.org/optimize/asmlib.zip

-msse4.2 を使用して GCC コンパイルで SSE4.2 を有効にするには、または AVX を使用するプロセッサがある場合は -mavx を使用します。

于 2013-05-15T09:46:37.847 に答える
2

gcc がそれを使用しているかどうかはわかりませんが、テキスト処理は一般に glibc を介して行われるため、問題にはなりません。string.h の標準文字列関数を使用し (おそらく cstring も同じことを行います)、適切な glibc を使用している場合は、それらを自動的に使用する必要があります。

私はそれを検索しましたが、glibc 2.15 (おそらく古いものでもある可能性があります) には既に SSE4.2 strcasecmp の最適化が含まれているようです:

http://upstream.rosalinux.ru/changelogs/glibc/2.15/changelog.html

于 2014-09-30T03:19:27.270 に答える