使用rapidxml读取xml文件的最快方法

时间:2014-05-07 10:40:51

标签: c++ xml optimization rapidxml

我正在使用rapidxml在C ++中阅读巨大的XML文件并尝试优化阅读,因为该部分大部分时间都在消耗(我用std::chrono进行了测量)。

即。我有一个大约40 MB的XML文件 - 来自rapidxml的实际解析只需要大约。 ~2300毫秒(绝对精细)。但是将文件从std::ifstream复制到缓冲区大约需要30000毫秒。我想知道瓶颈是否是我硬盘的速度,或者我是否可以做任何事情来保存缓冲区副本。

std::ifstream file(filename);
if(file == nullptr){
  throw std::runtime_error("File "+filename+" not found!");
}
rapidxml::xml_document<> doc;
std::vector<char> buffer((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>( ));
buffer.push_back('\0');
doc.parse<0>(&buffer[0]); 
rapidxml::xml_node<>* root = doc.first_node();

问题是行:std::vector<char> buffer((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>( ));,在40MB文件上大约需要30秒。

如何在这里优化阅读?

0 个答案:

没有答案