std::wregex EXCEL_CELL_REGEX(L"=\"(.*)\"", std::regex::optimize);
std::wstring text = L"=\"300498\"";
for (int i = 0; i < 981 * 6; i++) {
std::wsmatch match;
std::regex_match(text, match, EXCEL_CELL_REGEX);
}
以上代码大约需要 9 秒
boost::wregex EXCEL_CELL_REGEX(L"=\"(.*)\"", boost::regex::optimize);
std::wstring text = L"=\"300498\"";
for (int i = 0; i < 981 * 6; i++) {
boost::wsmatch match;
boost::regex_match(text, match, EXCEL_CELL_REGEX);
}
以上代码大约需要 1.5 秒
这些测试基于Debug配置。
您知道为什么std :: regex这么慢吗?如何优化代码?
答案 0 :(得分:2)
调试执行时间没有用;它们通常与Release版本的实际性能完全脱离。而且,调试时间将完全取决于系统和编译器。
答案 1 :(得分:1)
如果在调试配置中使用增强功能,则会得到很多可能不需要的调试信息。如果您希望以调试模式运行。尝试查找内存和CPU快照以查看瓶颈所在!我建议您使用c ++ 11 clock std lib函数来更精确地测量经过的时间。