私の C プログラムには、多くの strstr 関数呼び出しがありました。標準ライブラリ strstr はすでに高速ですが、私の場合、検索文字列の長さは常に 5 文字です。速度を上げるために、特別なバージョンに置き換えました。
int strstr5(const char *cs, const char *ct) { ながら (cs[4]) { if (cs[0] == ct[0] && cs[1] == ct[1] && cs[2] == ct[2] && cs[3] == ct[3] && cs[4] == ct[4]) 1 を返します。 cs++; } 0 を返します。 }
ct が cs で発生するかどうかを知るには十分であるため、この関数は整数を返します。この特殊なケースでは、私の関数は標準の strstr よりもシンプルで高速ですが、適用できるパフォーマンスの改善があるかどうかを知りたいです。小さな改善でも大歓迎です。
概要:
- cs の長さは >=10 ですが、それ以外の場合は変わる可能性があります。長さは以前にわかっています(私の機能では使用されていません)。cs の長さは通常 100 から 200 です。
- ct の長さは 5
- 文字列の内容は何でもかまいません
編集:すべての回答とコメントに感謝します。アイデアを研究してテストし、何が最も効果的かを確認する必要があります。サフィックス trie に関する MAK のアイデアから始めます。