Linux カーネル用の memchr 関数の実装が提案されており、最大 4 倍高速に実行されます。

配列内のシンボルを検索するために使用される memchr() 関数の最適化された実装を備えたパッチのセットが、Linux カーネルに含めることが提案されています。 バイトごとの比較を使用していた古いバージョンとは異なり、提案された実装は 64 ビットおよび 32 ビットの CPU レジスタの完全な使用を考慮して構築されています。 バイトの代わりにマシンワードを使用して比較が実行されるため、一度に少なくとも 4 バイトを比較できます。

大きな文字列を検索する場合、新しいオプションは古いオプションよりも約 4 倍高速であることが判明しました (たとえば、1000 文字の文字列の場合)。 小さな文字列の場合、新しい実装の効率はそれほど重要ではありませんが、それでも元のバージョンと比較すると高いです。 Linux カーネルでは、memchr() で処理される文字列のサイズは 512 バイトに達します。 検索文字が文字列の最後にある場合、512 バイトの文字列のパフォーマンス向上は 20% です。

5.18 ビットおよび 32 ビット アーキテクチャ用の新しい「memchr()」オプションを使用して 64 カーネルをテストしたところ、問題は見つかりませんでした。 最適化されたバージョンの「memchr()」を使用した場合のカーネル サブシステムの全体的なパフォーマンスの向上はまだ評価されておらず、実装を置き換える可能性も分析されていません (カーネル コードでは、memchr() 関数の呼び出しが 129 回発生します) 、ドライバーおよびファイル システムのコードを含む)。

出所: オープンネット.ru

コメントを追加します