私の移動プロジェクトでregexpの置き換えが非常に遅く、\ s +がregexp.ReplaceAllLiteralString(re2)を使用して1つのスペースに置き換えられていたことがわかりました。Regexp 1つ以上の対n + 1の一致
SVGの空白を崩壊させるためには、それは良いアイデアであるかどうかにかかわらず、 '{2、}'に変更すると操作が1/10になります。
\ s vs ''を使用している間はかなり差がありますが、それは意味があり、比較結果は5倍です。しかし、なぜ1つのスペースと+を使用すると、{2、}よりも9倍遅くなるのですか?
これは、置き換えが比較よりもコストがかかりますか? \ s {2、}の比較は、パターンに基づいて1ではなく2バイト/ルーンを消費しない限り、\ s {1、}よりもコストが高いように見えます。 – jpj
@jpjこれは、置き換えるテキストによって異なります。 XMLの場合、 '\ s {1、}'はほとんど常に何かを見つけて置き換え、結果として致命的なパフォーマンスを招く可能性があります。 '\ s {2、}'は置き換えられるものが見つかるかもしれないし、見つからないかもしれないので、置き換えではなく時間の比較の大部分が主な要因になるので、パフォーマンスにあまり影響を与えません。 –