0
我在我的go项目中发现regexp替换速度非常慢,\ s +被regexp.ReplaceAllLiteralString(re2)替换为单个空间。正则表达式一个或多个vs n + 1匹配
很显然,这是为了让SVG中的空白崩溃,无论这是个好主意,当改为“{2,}”时,操作只有十分之一。
虽然使用\ s vs''是一个公平的差异 - 但这是有道理的,它是5倍的比较。但为什么当使用单个空间和+时,它比{2,}慢9倍?
这是否意味着替换比比较成本更高? \ s {2,}的比较似乎比\ s {1,}更昂贵 - 除非它们根据模式消耗2个字节/符文而不是1个。 – jpj
@jpj这取决于您要替换的文本。在XML的情况下,'\ s {1,}'几乎总会找到并替换一些东西,可能会导致性能下降。 '\ s {2,}'可能会也可能不会找到任何要替换的东西,所以它不会对性能造成太大的伤害,因为大部分时间比较而不是替代将成为主要因素。 –