본문 바로가기
반응형

전체 글19

C++ 문자열의 내부 구조: std::string 이해하기 C++ 표준 라이브러리의 std::string은 단순히 문자의 벡터로 생각될 수 있지만, 실제로는 벡터와는 다른 특정 최적화가 적용된 조직으로 되어 있습니다. 모든 문자열은 내부적으로 ptr (문자열의 시작을 가리키는 포인터), size (널 종결자를 제외한 문자의 수), capacity (널 종결자를 제외한 문자열의 용량)으로 구성된 std::basic_string 구조에서 시작합니다. 작은 문자열 최적화(Small String Optimization) 이러한 기본 구조에 추가된 중요한 개념은 '작은 문자열 최적화(Small String Optimization, SSO)'입니다. 벡터와 달리, 문자열은 이동 연산 시 반복자나 참조가 무효화되지 않아도 되므로, 문자열 객체 내부에 작은 버퍼를 할당하여 짧.. 2023. 10. 30.
상위 1% 엔지니어의 7가지 간단한 습관 1. 인간을 위한 코드 작성 코드는 컴퓨터만을 위한 것이 아니라, 팀의 엔지니어나 사용자를 위한 것이다. 2. 코드 자체에서의 분리 우수한 엔지니어는 코드에 집착하지 않고, 최종 결과가 더 나을 경우 코드를 다시 시작하는 데 두려움이 없다. 3. 일관된 표준 사용 코드를 작성할 때 일관된 표준과 스타일을 유지한다. 4. 간단한 코드 작성 우수한 엔지니어는 읽기와 이해하기 쉬운 코드를 작성한다. 5. 놀람을 허용하지 않기 코드는 예기치 않은 결과를 가져서는 안된다. 이는 코드 원칙을 따르고 적절한 테스트를 작성함으로써 이루어진다. 6. 자주 소통하기 우수한 엔지니어는 다른 사람들의 피드백을 받아들이고 코드에 대한 초기 디자인을 지속적으로 반복한다. 7. 무작정 규칙을 따르지 않기 위의 "규칙"과 "원칙"은.. 2023. 10. 27.
C# 팁: 컬렉션 크기를 초기화함으로써 메모리 할당 향상 간단한 변화만으로 성능에 영향을 줄 수 있습니다. 컬렉션을 초기화할 때 초기 크기를 지정하십시오! 1. 컬렉션 초기화 컬렉션(예: List)을 초기화하면 기본 크기로 생성됩니다. 새 항목을 컬렉션에 추가할 때 .NET은 새 항목을 저장하기에 충분한 용량이 있는지 확인합니다. 충분하지 않으면 내부 용량을 두 배로 늘립니다. 이 리사이징 과정은 시간과 메모리를 소모합니다. 가능한 경우 예상 항목 수로 컬렉션을 초기화해야 합니다. 2. List 초기화 List의 경우, new List()를 new List(size)로 바꿈으로써 성능 향상을 얻을 수 있습니다. 이에 대한 벤치마크 결과에서 List 초기화 없이는 평균 1.7배의 성능 저하와 2.5배의 메모리 낭비가 발생했습니다. 3. HashSet 초기화 Li.. 2023. 10. 27.
반응형