むしろ簡単な質問です。 エラー、例外、ユーザーメッセージはどこに保存する必要がありますか? これまでのところ、私はいつも呼び出される関数内のローカル文字列を宣言し、気にしませんでした。例: ユーザー、エラー、例外メッセージの格納先(C++)
SomeClass::function1(...)
{
std::string str1("message1");
std::string str2("message2");
std::string str3("message3");
...
// some code
...
}
は突然、私は建設&初期化されてから各時間と呼ばれ、それは非常に高価であるかもしれないことに気づきました。クラス内の静的な文字列として、または個別のモジュール内に格納する方が良いでしょうか? ローカリゼーションはここでは該当しません。
ありがとうございます。
ほとんどの現在の実装では、コピーオンライトは実行されません。それらが提供するメリット(パフォーマンスに応じた)は、スレッドセーフであるためにはトラブルの量によってパフォーマンスが向上します。マルチスレッド環境に対処するには、すべての操作(読み取りと書き込みの両方)を保護するためにロックを追加する必要があり、パフォーマンスが大幅に低下します。 –
警告:関数のローカル統計(例のstr_quuxなど)は、プログラムの起動時には初期化されず、包含する関数の最初の実行時に初期化されます。これにより、スレッドの安全性の問題が発生します。 –