我是一名初学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我真的不关心一次处理完整的文件.我刚刚发现逐行,逐字或逐个字符地读取文件会大大减慢速度.