ホームページ >バックエンド開発 >C++ >c \ d`は、c#regexで桁マッチングの場合は `[0-9]`よりも効率が低いのはなぜですか?

c \ d`は、c#regexで桁マッチングの場合は `[0-9]`よりも効率が低いのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-31 18:26:09889ブラウズ

Why is `d` Less Efficient Than `[0-9]` for Digit Matching in C# Regex?

c#正規表現

の理由はd [0-9] よりも低いです

最近のパフォーマンステストでは、C#正規表現エンジンでは、

>の数と一致するために使用される効率は、dおよび[0-9]文字セットよりも予想外に低いことを示しています。この発見により、2つの問題がトリガーされました [0123456789]

人々は、特定の文字範囲と狭い範囲をカバーしているため、スコープがより効率的であると考えるかもしれません。ただし、テスト結果は、2つの方法のパフォーマンスの違いが最も少ないことを示しています。 [0-9][0123456789] テストでは、の効率が

よりも大幅に低いことがわかりました。これは、通常、

の略語と見なされるため、特に不可解です。さらなる調査により、根本的な違いが明らかになりました:

Unicode番号の一致、dASCII番号の一致[0-9]

すべてのUnicode番号

を一致させます。これには、他の言語の文字や、ペルシャの数字(۱۲۳۴۵۶۷۸۹)やダバガリ数(०१२३४५६७८९)などの文字が含まれます。これを証明するために、次のコードはすべてのユニコード番号を含む文字列を生成します。 d [0-9]生成された文字列には、アラビア語、タイ、カムノ、その他の文字の文字を含む数字として識別されたさまざまな文字が表示されます。 d [0-9]パフォーマンスインパクト

d[0-9]のパフォーマンスの違いを説明する幅広い文字範囲(ユニコード番号とASCII数)を確認してください。 ASCII数のみの場合、使用を使用すると、

よりも優れたパフォーマンスが生成されます。

以上がc \ d`は、c#regexで桁マッチングの場合は `[0-9]`よりも効率が低いのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。