正则表达式比其他更快吗?

时间:2011-08-09 03:23:11

标签: c++ regex

我有一个Web服务器程序来处理来自浏览器的请求,该程序是用c ++编写的。有很多服务,bbs / wiki / news,仅举几例。他们有不同的网址,例如:

  1. / BBS / viewtopic?TID = 1

  2. / wiki / doc?did = 1

  3. /消息/ ARTICAL?援助= 1

  4. 现在我自己做URI解析,然后再做其他事情。我在这里以bbs为例,如果字符串以/ bbs /开头,bbs将接管后续进程,然后bbs将继续检查它是否为viewtopic,如果是,则sever将主题内容发送给客户端...

    我有很多if if to dispatch请求到不同的服务,同时,每个服务都有很多,否则也做不同的行为。

    我不知道其他是否是明智的选择,即使代码很容易理解。 这种应用程序的正则表达式更快吗?

    感谢您的参与:)

2 个答案:

答案 0 :(得分:4)

通常,通用编程框架(包括使用正则表达式)会导致编写速度更慢的代码。什么是正则表达式库可能会让你花费大量时间以不重要的CPU时间为代价编写代码。更常见的瓶颈是数据库的带宽,磁盘io和CPU使用率(如果它在同一台机器上)。

如果这很重要,我会明确地说你可以通过避免使用正则表达式库来获得更快的代码,但是你应该对你的实现进行基准测试,如果没有其他原因可以改进它。我没有在C ++中测试它们以了解它们的效率,但是在示例程序中测试例程将是一项额外的工作。

答案 1 :(得分:2)

如果你的if/else只检查字符串的前缀,那么它会更快。如果它更复杂,需要对字符串进行多次传递,那么您应该自己测量性能。

  

伟大的工程来自于创造可预测的结果   可预测的成本。事实上,我喜欢说,如果你没有测量   你不是工程师。

     

Rico Mariani