我发现我的go项目中的正则表达式替换速度非常慢,\s+被使用正则表达式的单个空格替换。ReplaceAllLiteralString (re2(。
它显然是为了折叠 SVG 中的空格而放在那里的,无论这是否是一个好主意,当更改为"{2,}"时,操作是十分之一的时间。
虽然使用 \s 与 ' ' 是一个公平的差异 - 但这是有道理的,它是比较的 5 倍。但是为什么当使用单个空格和 + 时,它比 {2,} 慢 9 倍?
X+
的意思是"X的每个实例出现一次或多次",这意味着它相当于{1,}
。使用s+
时,您要替换(单个空白(以及
s+
。
对于 SVG 文档或任何与此相关的 XML 文档,使用 s{2,}
肯定会很慢。以下文档需要 5 次替换,忽略换行符序列:
<?xml version="1.0" encoding="utf-8"?>
<element attr1="value" attr2="value" attr3="value"/>
现在想象一个 SVG 文档要复杂得多,像 s+
这样的东西会比 s{1,}
快得多是合理的(又名 s{2,}
(!如果您使用 CC_10,上面的文档中将有 0 个替换!