背景: 私は、C の memchrとほぼ同じ機能の純粋な D 言語実装を作成しようとしていますが、ポインターの代わりに配列とインデックスを使用します。その理由は、 std.string がコンパイル時の関数評価で機能するようにするためです。D に不慣れな方のために説明すると、特定の制限が満たされていれば、コンパイル時に関数を評価できます。1 つの制限は、ポインターを使用できないことです。もう 1 つは、C 関数を呼び出したり、インライン アセンブリ言語を使用したりできないことです。コンパイル時に文字列ライブラリを機能させると、コンパイル時のコード生成ハックに役立ちます。
質問: memchr は内部でどのように動作して、これほど高速に動作するのですか? Win32 では、単純なループを使用して純粋な D で作成できたものはすべて、境界チェックの無効化、ループ展開などの明らかな最適化手法を使用しても、少なくとも 2 倍遅くなります。文字列内の文字を見つけるのと同じくらい簡単なことですか?