我发现标准字符串添加速度非常慢所以我正在寻找一些可以加速我的代码的技巧/黑客.
我的代码基本结构如下:
inline void add_to_string(string data,string &added_data) { if(added_data.length()<1) added_data = added_data + "{"; added_data = added_data+data; } int main() { int some_int = 100; float some_float = 100.0; string some_string = "test"; string added_data; added_data.reserve(1000*64); for(int ii=0;ii<1000;ii++) { //variables manipulated here some_int = ii; some_float += ii; some_string.assign(ii%20,'A'); //then we concatenate the strings! stringstream fragment; fragment<<some_int <<","<<some_float<<","<<some_string; add_to_string(fragment.str(),added_data); } return; }
做一些基本的分析,我发现在for循环中使用了大量的时间.我能做些什么可以大大提高速度吗?使用c字符串而不是c字符串会有帮助吗?
解决方法
如果不在循环中调用add_to_string,则可以节省大量字符串操作.
我相信这也是一样的(虽然我不是C专家,也不知道stringstream
究竟是什么):
stringstream fragment; for(int ii=0;ii<1000;ii++) { //variables manipulated here some_int = ii; some_float += ii; some_string.assign(ii%20,'A'); //then we concatenate the strings! fragment<<some_int<<","<<some_string; } // inlined add_to_string call without the if-statement ;) added_data = "{" + fragment.str();
原文地址:https://www.jb51.cc/c/115338.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。