现在的位置: 首页 > 综合 > 正文

如何在使用了BOOST_REGEX_MATCH_EXTRA情况下提高boost::regex_search的执行速度

2013年08月31日 ⁄ 综合 ⁄ 共 921字 ⁄ 字号 评论关闭

首先,请注意我使用了BOOST_REGEX_MATCH_EXTRA这个宏来捕获多个子表达式,具体功能请参考:http://www.cppprog.com/boost_doc/libs/regex/doc/html/boost_regex/captures.html。

其中描述到: 激活这个特性会造成性能影响(即使你不使用),如果你使用就会有更大的影响。

 

事实也确实如此,我写了一个程序来提取cpp文件中所有的函数原型,如:

A.cpp文件中有:

void A::Func1()

{

    ....

}

void A::Func2(int i)

{

    ....

}

void A::Func2(int i, A& a)

{

    ....

}

将此文件输入程序后所得到的结果是:

void A::Func1()

void A::Func2(int i)

void A::Func2(int i, A& a)

 

我的代码如下(仅列出主要部分):

我测试的是1300多行的cpp文件,当加上“smatch tmp; what = tmp;”后,性能提升了“无穷倍”,因为没有这两行,我不知道要等到什么时候,而加了后就执行了2s多。原因我估计是内部状态机的问题,但尚需深入研究后确定。

抱歉!评论已关闭.