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 秒
这些测试建立在调试配置之上。
你知道为什么 std::regex 这么慢吗?如何优化代码?
最佳答案
调试执行时间是无用的;它们通常与发布版本的实际性能完全脱节。此外,调试时间将极其依赖于系统和编译器。
关于c++ - std::regex 在 VC2015U3 上比 boost::regex 慢得多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51503590/