태그: optimization
10편
-
Partytown으로 서드파티 스크립트를 Web Worker로 옮기기: GA·GTM, Next.js·Astro, INP 개선
Partytown이 서드파티 스크립트를 Web Worker에서 실행하는 방식, forward 설정의 방향, GA·GTM·Next.js·Astro 통합, Web Vitals 측정과 디버깅을 설명합니다.
-
PostgreSQL 고급 최적화 가이드 — 쿼리 성능 튜닝·인덱스·파티셔닝·복제
EXPLAIN ANALYZE 해석, B-tree·GIN·GiST·BRIN 인덱스 선택, 파티셔닝과 샤딩, PgBouncer 풀링 모드, Vacuum·Autovacuum 튜닝, 스트리밍·논리 복제와 HA까지 PostgreSQL 성능 문제를 진단하고 개선하는 방법을 정리합니다.
-
Million.js 가이드 — React 성능 최대화와 Virtual DOM·Block·For·Next.js
Million.js의 핵심 개념, 컴파일러·Block·For, Next.js App Router 통합, 마이그레이션·벤치마크·제약을 다룹니다. Million.js는 React 16 이상과 Node 18 이상을 전제로 하는 오픈소스 최적화 스택입니다.
-
Webpack 5 내부 동작과 설정: 의존성 그래프, 로더·플러그인 구조, 코드 스플리팅, Tree Shaking
Webpack 5 정리. 의존성 그래프와 번들링 알고리즘, 로더·플러그인 아키텍처, 코드 스플리팅 전략, Tree Shaking 메커니즘, 프로덕션 패턴, 설치와 기본 설정, Loaders와 Plugins를 다룹니다.
-
C++ volatile: 하드웨어 레지스터와 시그널 핸들러용 키워드, 스레드 동기화에 못 쓰는 이유
volatile이 변수를 레지스터에 캐싱하는 최적화를 막아 하드웨어 레지스터, 시그널 핸들러, 메모리 매핑 I/O에서 매번 실제 메모리를 읽게 하는 원리를 설명합니다. 원자성을 보장하지 않아 스레드 동기화에는 쓸 수 없는 이유와 atomic과의 차이도 다룹니다.
-
C++ inline의 진짜 의미: 인라인 확장이 아니라 ODR 예외, inline 변수와 constexpr
inline은 호출을 펼치라는 명령이 아니라 헤더에 정의를 두어도 링크 에러가 나지 않게 하는 ODR 예외입니다. 실제 인라인 확장은 컴파일러가 결정한다는 점, 큰 함수와 재귀·가상 함수의 한계, C++17 inline 변수와 constexpr의 관계를 예제로 봅니다.
-
C++ Flyweight 패턴: 공통 상태를 공유해 텍스트·타일·파티클 메모리 줄이기
C++ Flyweight 패턴으로 공통 상태(intrinsic)를 공유하고 개별 상태(extrinsic)만 따로 두어 메모리를 줄이는 방법. 텍스트 렌더링, 게임 타일, 파티클 시스템 예제와 캐시 수명·동시성 문제를 다룹니다.
-
C++ 예외 비용: Zero-Cost 모델의 의미, throw 비용, noexcept와 이동 생성자
C++ 예외의 Zero-Cost 모델이 실제로 무엇을 의미하는지, 정상 경로와 예외 경로의 비용 차이, noexcept가 이동 생성자 성능에 미치는 영향, 그리고 예외를 제어 흐름으로 남용했을 때의 실제 성능 손실을 벤치마크와 함께 정리합니다.
-
C++ Copy Elision 심화 | RVO·NRVO·필수 생략·예외 안전
C++17에서 prvalue 반환에 복사 생략이 의무가 된 규칙과 NRVO처럼 여전히 컴파일러 재량인 경우를 구분하고, NRVO가 실패하는 조건, 이동 폴백과 noexcept, return std::move가 최적화를 막는 이유를 설명합니다.
-
C++ 분기 예측: likely·unlikely 속성과 분기 없는 코드로 성능 개선하기
CPU 파이프라인에서 분기 예측이 실패할 때 생기는 비용을 설명하고, C++20 [[likely]]·[[unlikely]] 힌트, 조건문을 산술 연산으로 바꾸는 branchless 코드, 데이터 정렬 효과, 룩업 테이블과 PGO 적용 방법을 다룹니다.