태그: 성능
11편
-
Swift 컬렉션 내부 | Array·Dictionary·Set과 Copy-on-Write
Swift의 Array·Dictionary·Set을 만들고 map·filter·reduce, flatMap, 슬라이스로 변환하는 방법과 함께, 값 타입인 컬렉션이 힙 버퍼를 공유하다 쓰기 순간에만 복사하는 Copy-on-Write 동작을 직접 구현해 봅니다. 그룹핑·빈도 세기·lazy 패턴도 담았습니다.
-
C++ 배열: 메모리 레이아웃, std::array, 캐시 최적화
C 배열이 함수 인자로 넘어갈 때 포인터로 쇠퇴하는 규칙과 2차원 배열의 함정, std::array 설계와 C 배열·vector의 선택 기준, 행 우선 레이아웃에 맞춘 캐시 친화 순회, C++23 std::mdspan까지 다룹니다.
-
CDN·Cloudflare 심화 — 엣지 캐시·Workers·애니캐스트·DDoS·프로덕션 패턴
CDN 엣지 캐시 알고리즘, Cloudflare Workers(V8 Isolate) 런타임, 애니캐스트 BGP 라우팅, DDoS 완화 계층, Cache-Control·SWR 등 프로덕션 패턴을 엔지니어 관점에서 정리합니다.
-
C++ static 함수 정리: 클래스 static 멤버, 파일 스코프 static, 내부 링키지와 ODR
함수에 붙는 static은 클래스 static 멤버 함수와 파일 스코프 static 함수라는 전혀 다른 두 뜻을 가집니다. this가 없는 멤버 함수, 내부 링키지와 익명 네임스페이스 비교, 헤더의 static 정의가 ODR과 코드 크기에 주는 영향을 예제로 봅니다.
-
MySQL EXPLAIN으로 느린 쿼리 잡기 | 실행 계획·인덱스 튜닝 실전
MySQL 8 InnoDB에서 느린 쿼리를 EXPLAIN으로 분석할 때 type, key, rows, Extra를 읽는 법과 복합 인덱스, EXPLAIN ANALYZE, 커버링 인덱스, ANALYZE TABLE로 개선하는 순서를 보여줍니다. OR 조건 분할과 함수로 감싼 컬럼 문제도 다룹니다.
-
Python list vs tuple vs set: 성능·가변성 차이와 선택 기준
Python list, tuple, set을 가변성, in 검색과 추가·삭제 성능, 메모리 사용량 기준으로 비교하고, set 인덱싱이나 list를 딕셔너리 키로 쓰는 실수, named tuple과 set 연산 활용, 상황별 선택 플로우를 설명합니다.
-
C++ Small String Optimization (SSO) | string 성능 최적화 원리
std::string이 짧은 문자열은 힙 할당 없이 객체 내부 버퍼에 저장하는 Small String Optimization의 구조를 설명하고, 주소 비교와 sizeof로 SSO 여부를 확인하는 법, 생성과 복사 벤치마크, 간단한 SSO 구현 예시를 다룹니다.
-
C++ RVO와 NRVO: C++17 보장 복사 생략과 return std::move가 NRVO를 막는 경우
return 문에서 복사가 언제 생략되는지 RVO와 NRVO를 나눠 설명하고, C++17이 보장하는 복사 생략의 범위와 여러 반환 경로나 return std::move 때문에 NRVO가 깨지는 경우를 GCC로 직접 확인한 결과와 함께 보여줍니다.
-
C++ std::function vs 함수 포인터: 성능과 유연성의 트레이드오프
콜백을 저장할 때 함수 포인터와 std::function 중 무엇을 고를지 비교합니다. 직접 측정한 호출 비용 차이는 1ns 미만이었고, 실제 비용은 인라인 불가와 생성·복사 시 힙 할당에서 생긴다는 점을 이벤트 시스템·스레드 풀 예제로 설명합니다.
-
C++ Move 시맨틱스: 복사와 이동의 차이, rvalue 참조, std::move
lvalue와 rvalue 구분에서 시작해 std::move가 실제로는 캐스트일 뿐인 이유, 참조 축소 규칙과 std::forward를 이용한 완벽 전달, Rule of Five와 이동 전용 타입 설계, 자기 이동 대입 처리까지 예제로 설명합니다.
-
C++ vector 성능: 캐시 친화성, 용량 성장 전략, reserve 최적화
push_back만 반복했는데 느려지는 이유를 size와 capacity, 재할당 비용, 캐시 지역성으로 풀어 보고 reserve·shrink_to_fit·emplace_back을 쓸 시점을 가립니다. string의 SSO, erase-remove, 반복자 무효화 같은 흔한 실수도 다룹니다.