所以,归根结底,速度对我来说非常重要。每一毫秒都很重要,所以我想知道哪种方法最快。
在我的程序中,我有各种不同的标志(flag[1] - flag[7])。为了看到如何处理输出,我必须将输入与各种模式(pattern[1] - pattern[7])匹配。那么问题来了,是更好地将字符串与pattern[1]匹配,如果匹配成功,则处理它,如果没有,则尝试将其与pattern[2]匹配(基本上进行7次匹配),还是将所有模式放入一个带有拆分的正则表达式中:
"^[patterns[1]|pattern[2]|...]$
查看是否匹配,如果匹配,则对字符串进行分割以获取标志值(它始终在最后),并根据需要进行处理?
因此,总的来说:7种不同的匹配与1种匹配和一次分割。
注意:基于提供的数据,我将尝试对这7个匹配进行排序,以便首先匹配最有可能发生的那一个。
我希望保持这个问题的时间导向性,但是为了提出建议和做出决策,在第一次匹配后接受字符串的概率大约为91.3%。
^(?:...|...|...)$
。b) 为什么不在一些大型示例输入上运行这两个实现并测量执行时间呢? - Martin EnderSystem.Diagnostics
库中有一个出色的Stopwatch
类。 - Corey Ogburn