这个问题实际上是我发布的a previous question的更新。根据用户意见,我意识到我需要对代码进行分析,因此我通过Vtune Amp对我的代码的第一部分进行了分析。我得到以下语句,与其他方法相比消耗大量时间
Source Line Source CPU Time by Utilization Overhead Time Spin Time
double high_val = atof(temp[2].c_str());
std::string s( (std::istreambuf_iterator<char>(&buffer)), std::istreambuf_iterator<char>());
boost::split( temp, lines[i], boost::is_any_of(",") );
在上面的代码缓冲区是:
boost::asio::streambuf buffer
;
有关上述更换功能的任何建议吗?
答案 0 :(得分:3)
尝试Boost.Sprit
进行所有解析任务。如果你有很多规则,它可能会消耗更多的编译时资源,但在运行时会很快。
第一行:
#include <boost/spirit/include/qi.hpp>
std::string::iterator begin = temp.begin() + 2;
std::string::iterator end = input.end();
float high_val;
boost::spirit::qi::parse(begin, end, boost::spirit::float_, high_val);
最后一行:
std::vector<std::string>;
// '%' is a list parser
boost::spirit::qi::parse(buffer.data(), buffer.data() + buffer.size(), *(char_ - ',') % ',', lines);
最有可能的是,可以为你的所有任务创建一个简单的语法,但我不知道你正在解析什么,所以我只是试图或多或少地匹配你的上述代码。