で作業していて、で定義されているさまざまstd::regex
な定数について読んでいるときに、それについて読んでいると、アプリケーションで役立つように思えます(最初に初期化された正規表現のインスタンスが1つだけ必要ですが、ロードプロセス全体で複数回使用されます)。std::regex_constants
std::optimize
ワーキングペーパーn3126(pg。1077)によると、 std::regex_constants::optimize
:
正規表現エンジンが、正規表現が一致する速度に注意を払い、正規表現オブジェクトが作成される速度には注意を払わないように指定します。それ以外の場合は、プログラム出力に検出可能な影響はありません。
どのタイプの最適化が実行されるかについて興味がありましたが、それに関する文献はあまりないようです(実際、未定義のようです)。私が見つけた唯一のものの1つは、cppreference.comにありました。述べたstd::regex_constants::optimize
:
正規表現エンジンに、構築を遅くする潜在的なコストを使用して、マッチングを高速化するように指示します。たとえば、これは非決定論的FSAを決定論的FSAに変換することを意味する場合があります。
ただし、私はコンピュータサイエンスの正式なバックグラウンドを持っていません。また、FSAとは何かの基本を理解し、決定論的FSA(各州には次の州が1つしかない)と非決定論的FSA(複数の潜在的な次の状態を伴う); これによりマッチング時間がどのように改善されるのかわかりません。また、さまざまなC++標準ライブラリの実装に他の最適化があるかどうかを知りたいと思います。