相关疑难解决方法(0)

增加C++正则表达式取代性能

我是一名初学C++程序员,从事一个小型C++项目,我必须处理一些相对较大的XML文件,并从中删除XML标签.我使用C++ 0x regex库成功完成了这项工作.但是,我遇到了一些性能问题.只需读入文件并在其内容上执行regex_replace函数,我的电脑上大约需要6秒钟.我可以通过添加一些编译器优化标志将其降低到2.但是,使用Python,我可以在不到100毫秒的时间内完成它.显然,我在C++代码中做的事情非常低效.我该怎么做才能加快速度呢?

我的C++代码:

std::regex xml_tags_regex("<[^>]*>");

for (std::vector<std::string>::iterator it = _files.begin(); it != 
        _files.end(); it++) {

    std::ifstream file(*it);
    file.seekg(0, std::ios::end);
    size_t size = file.tellg();

    std::string buffer(size, ' ');

    file.seekg(0);
    file.read(&buffer[0], size);

    buffer = regex_replace(buffer, xml_tags_regex, "");

    file.close();
}
Run Code Online (Sandbox Code Playgroud)

我的Python代码:

regex = re.compile('<[^>]*>')

for filename in filenames:
    with open(filename) as f:
        content = f.read()
        content = regex.sub('', content)
Run Code Online (Sandbox Code Playgroud)

PS我真的不关心一次处理完整的文件.我刚刚发现逐行,逐字或逐个字符地读取文件会大大减慢速度.

c++ python regex performance replace

11
推荐指数
1
解决办法
1446
查看次数

标签 统计

c++ ×1

performance ×1

python ×1

regex ×1

replace ×1