標準の文字列の追加が非常に遅いことがわかったので、コードを高速化できるヒント/ハックを探しています。
私のコードは基本的に次のように構成されています。
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 文字列を使用すると役立つでしょうか?