我发现我的go项目中的正则表达式替换速度非常慢,使用regexp.ReplaceAllLiteralString (re2)将\s+替换为单个空格。
它显然是用来折叠SVG中的空格的,不管这是不是一个好主意,当它更改为‘{2,}’时,操作的时间是原来的十分之一。
虽然使用\s vs‘’是一个公平的区别-但这是有意义的,它是比较的5倍。但是为什么当使用单个空格和+时,它比使用{2,}慢9倍?
发布于 2017-05-29 09:54:07
X+的意思是“X的每个实例都出现一次或多次”,这意味着它等同于{1,}。您正在替换(单个空白),使用\s+时也是如此。
对于SVG文档或任何XML文档而言,使用\s+肯定会很慢。以下文档将需要5个替换,忽略换行符序列:
<?xml version="1.0" encoding="utf-8"?>
<element attr1="value" attr2="value" attr3="value"/>现在想象一个复杂得多的SVG文档,像\s{2,}这样的东西会比\s+快得多也是合理的。\s{1,})!如果你使用\s{2,},在上面的文档中将会有0个替换!
https://stackoverflow.com/questions/44233520
复制相似问题