다소 간단한 질문입니다. 어디에서 오류, 예외, 사용자 메시지를 저장해야합니까? 지금까지 필자는 항상 로컬 문자열을 호출 할 함수 내에서 로컬 문자열을 선언했으며 걱정하지 않았습니다. 예 : 사용자, 오류, 예외 메시지 저장 (C++)
SomeClass::function1(...)
{
std::string str1("message1");
std::string str2("message2");
std::string str3("message3");
...
// some code
...
}
은 갑자기 건설 & 초기화 이후마다 호출하고 꽤 비쌀 수 있음을 깨달았다. 클래스 나 심지어 별도의 모듈에 정적 문자열로 저장하는 것이 더 좋을까요? 현지화가 여기에 해당하지 않습니다.
미리 감사드립니다.
대부분의 현재 구현은 copy-on-write를 수행하지 않습니다. 이들이 제공하는 이점 (성능 측면에서)은 스레드 안전성을 얻으려면 문제의 양을 능가합니다. 다중 쓰레드 환경을 다루기 위해서는 잠금을 추가하여 모든 작업 (읽기와 쓰기 모두)을 보호해야합니다. 그러면 성능이 크게 떨어집니다. –
경고 : 함수의 로컬 통계 (예 : str_quux)는 프로그램 시작시에는 포함되지 않지만 함수를 처음 실행하면 초기화됩니다. 이로 인해 스레드 안전 문제가 발생합니다. –