長時間実行しなければならない機能があります。 この関数が複数のスレッドによって呼び出されたとします。この関数には多くの変数があり、そのほとんどはstd :: stringです。 機能の変数を宣言するための2つの可能な方法があります: の1-複数のスレッドから呼び出されたときに関数変数を宣言する最良の方法は何ですか?
void Test()
{
std::string s1; s1.reserve(500);
std::string s2; s2.reserve(500);
std::string s3; s3.reserve(500);
std::string s4; s4.reserve(500);
std::string s5; s5.reserve(500);
for(;;)
{
s1= Read_from_file();
s2= Read_from_file2();
s3= s1.substr(0,Snaplength);
s4= s2.substr(0,Snaplength);
s5= s1+ s2;
.
.
.
}
}
2 -
for(;;)
{
std::string s1= Read_from_file();
std::string s2= Read_from_file2();
std::string s3= s1.substr(0,Snaplength);
std::string s4= s2.substr(0,Snaplength);
.
.
.
}
}
としては、関数が長時間実行されている必要があり、以前と述べました。
私の関数を多くのスレッドで呼び出す必要がある場合、どのように時間の複雑さが改善されますか?
[Added:] 私の関数を1000000回呼び出す必要があり、できるだけ早くそれをやりたいとします。 1つの可能な方法は、複数のスレッドで関数を実行することですが、Afaikでは、複数のスレッドで関数を実行することによって、より良いパフォーマンスを達成することが常に可能なわけではありません。その場合、スレッドを追加する方がより高速になるでしょうか?
OS = GNU/Linux
C++ 11を使用している場合は、ほぼ確実に2番目のものです。 –
ローカル変数はスレッド間で共有されていないので、私はあなたが何を求めているのか分かりません。 –