gpt4 book ai didi

c++ - 什么时候我应该更喜欢 boost::regex(或 boost::xpressive)而不是 boost::algorithm

转载 作者:行者123 更新时间:2023-11-30 00:58:28 25 4
gpt4 key购买 nike

我认为 boost 正则表达式引擎会比 boost::algorithm 更快
这个简单的测试表明算法大大击败了正则表达式引擎
这是整个测试程序
我错过了什么吗?

#include "boost/algorithm/string.hpp"
#include "boost/regex.hpp"
#include "boost/xpressive/xpressive.hpp"
#include "boost/progress.hpp"
#include <iostream>

int main()
{
boost::timer tm;
const int ITERATIONS = 10000000;
{
std::string input("This is his face");
tm.restart();
for( int i = 0; i < ITERATIONS; ++i)
{
boost::algorithm::replace_all(input,"his","her");
}
std::cout << "boost::algorithm: " << tm.elapsed()/60 << std::endl;
}

{
std::string input("This is his face");
boost::regex expr("his");
std::string format("her");
tm.restart();
for( int i = 0; i < ITERATIONS; ++i)
{
boost::regex_replace( input, expr, format );
}
std::cout << "boost::regex: " << tm.elapsed()/60 << std::endl;
}

{
std::string input("This is his face");
boost::xpressive::sregex expr = boost::xpressive::as_xpr("his");
std::string format("her");
tm.restart();
for( int i = 0; i < ITERATIONS; ++i)
{
boost::xpressive::regex_replace(input, expr, format);
}
std::cout << "boost::xpressive: " << tm.elapsed()/60 << std::endl;
}

return 0;
}

最佳答案

regex 可以处理各种正则表达式(例如“My.*Test”之类的东西可以匹配到“我想知道已经编写了多少个名为 MySumTest 的类?”这样的文本中)。它们比在文本中查找模式的算法更强大但性能更差

关于c++ - 什么时候我应该更喜欢 boost::regex(或 boost::xpressive)而不是 boost::algorithm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6115442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com