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,}'可能會也可能不會找到任何要替換的東西,所以它不會對性能造成太大的傷害,因爲大部分時間比較而不是替代將成爲主要因素。 –