Logger System 0.1.3
High-performance C++20 thread-safe logging system with asynchronous capabilities
Loading...
Searching...
No Matches
BENCHMARKS.kr

autotoc_md1093

doc_id: "LOG-PERF-001" doc_title: "Logger System 성능 벤치마크" doc_version: "1.0.0" doc_date: "2026-04-04" doc_status: "Released" project: "logger_system"

category: "PERF"

Logger System 성능 벤치마크

SSOT: This document is the single source of truth for Logger System 성능 벤치마크.

언어: English | 한국어

최종 업데이트: 2025-11-28 버전: 3.0.0

이 문서는 포괄적인 성능 벤치마크 결과와 업계 표준 로깅 라이브러리와의 비교를 제공합니다.


목차

  • 요약
  • 테스트 환경
  • 핵심 성능 메트릭
  • 업계 비교
  • 지연시간 벤치마크
  • 메모리 프로파일링

요약

logger system은 모든 테스트 시나리오에서 뛰어난 성능을 제공합니다:

핵심 하이라이트

  • 최고 처리량: 4.34M 메시지/초 (단일 스레드, 비동기 모드)
  • 멀티스레드 성능: 1.07M msg/s (4스레드), 412K msg/s (8스레드)
  • 초저지연: 148ns 평균 인큐 시간 (spdlog보다 15.7배 우수)
  • 메모리 효율: <2MB 기본 메모리 풋프린트
  • **적응형 스케일링**: 지능형 배칭이 높은 경합 하에서 성능 유지

경쟁 우위

  1. **spdlog 비동기 모드보다 15.7배 낮은 지연시간**
  2. **멀티스레드에서 24% 더 나은 성능** (4스레드)
  3. **적응형 배칭으로 16스레드까지 일관된 스케일링**
  4. **제로 카피 설계**로 할당 및 오버헤드 최소화

테스트 환경

하드웨어 구성

플랫폼: Apple M1 (8코어) @ 3.2GHz

  • CPU: Apple M1 (8코어: 4 성능 + 4 효율)
  • RAM: 16GB LPDDR4X
  • 스토리지: 512GB NVMe SSD
  • OS: macOS Sonoma 14.x

소프트웨어 구성

컴파일러: Clang 15.0 (macOS)

최적화 플래그: -O3 -march=native -DNDEBUG, LTO, PGO 활성화


핵심 성능 메트릭

단일 스레드 성능

모드 처리량 지연시간 (avg) 지연시간 (p99) 메모리
비동기 (logger_system) 4.34M msg/s 148 ns 312 ns 1.8 MB
동기 (파일 작성자) 515K msg/s 1,940 ns 4,200 ns 256 KB
콘솔만 583K msg/s 1,715 ns 3,800 ns 128 KB

분석:

  • 비동기 모드는 동기 모드보다 8.4배 높은 처리량 제공
  • 직접 파일 I/O 대비 13배 낮은 지연시간

멀티스레드 성능

스레드 수별 처리량

스레드 Logger System spdlog 비동기 spdlog 동기 개선율
1 4.34M msg/s 5.35M msg/s 515K msg/s -19% vs spdlog 비동기
4 1.07M msg/s 785K msg/s 210K msg/s +36% vs spdlog 비동기
8 412K msg/s 240K msg/s 52K msg/s +72% vs spdlog 비동기
16 390K msg/s ~180K msg/s* ~40K msg/s* +117% vs spdlog 비동기

핵심 인사이트:

  • 적응형 배칭**이 경합 상황에서 우수한 스케일링 제공
  • **4 스레드: 표준 비동기 모드보다 24% 우수
  • 8 스레드: 적응형 배칭으로 78% 개선
  • 16 스레드: 높은 경합 시나리오에서 117% 향상

업계 비교

vs spdlog (가장 인기 있는 C++ 로거)

단일 스레드 비교

메트릭 logger_system spdlog 비동기 승자
처리량 4.34M msg/s 5.35M msg/s spdlog (+23%)
지연시간 (avg) 148 ns 2,325 ns logger_system (15.7x)
지연시간 (p99) 312 ns 4,850 ns logger_system (15.5x)
메모리 1.8 MB 4.2 MB logger_system (-57%)

결론: logger_system은 23% 처리량을 희생하여 15.7배 낮은 지연시간**과 **57% 적은 메모리 획득

멀티스레드 비교 (4 스레드)

메트릭 logger_system spdlog 비동기 승자
처리량 1.07M msg/s 785K msg/s logger_system (+36%)
지연시간 (avg) 186 ns 3,120 ns logger_system (16.8x)
경합 처리 적응형 배칭 락 기반 큐 logger_system

vs Boost.Log

메트릭 logger_system Boost.Log 개선율
처리량 (1 스레드) 4.34M msg/s 1.2M msg/s +262%
처리량 (4 스레드) 1.07M msg/s 480K msg/s +123%
지연시간 148 ns 833 ns 5.6x 낮음
바이너리 크기 2.4 MB 18.7 MB 87% 작음
컴파일 시간 15 sec 127 sec 8.5x 빠름

vs glog (Google 로깅 라이브러리)

메트릭 logger_system glog 개선율
처리량 (비동기) 4.34M msg/s 890K msg/s +387%
지연시간 148 ns 1,124 ns 7.6x 낮음
스레드 안전성 락프리 핫 패스 뮤텍스 기반 우수

지연시간 벤치마크

지연시간 분포 (단일 스레드, 비동기)

백분위수 지연시간 설명
p50 142 ns 중앙값
p90 187 ns 90% 메시지
p95 224 ns 95% 메시지
p99 312 ns 99% 메시지
p99.9 487 ns 99.9% 메시지
p99.99 1,240 ns 최악 0.01%
Max 3,450 ns 절대 최악 케이스

분석:

  • 매우 타이트한 분포 (p50에서 p99: 142ns → 312ns)
  • 예측 가능한 성능, 아웃라이어 최소
  • 일관된 지연시간이 필요한 실시간 시스템에 이상적

부하 시 지연시간

부하 (msg/s) 평균 지연시간 p99 지연시간
100K 148 ns 298 ns
500K 152 ns 312 ns
1M 161 ns 334 ns
2M 178 ns 389 ns
4M 203 ns 467 ns

핵심 인사이트: 최고 처리량에서도 지연시간이 **매우 안정적**으로 유지됨


메모리 프로파일링

구성별 메모리 풋프린트

구성 기본 최대 평균 비고
최소 (콘솔만) 128 KB 256 KB 180 KB 개발용
파일 작성자 (동기) 256 KB 512 KB 340 KB 단순 앱
비동기 (기본) 1.8 MB 2.4 MB 2.1 MB 권장
고성능 4.2 MB 6.8 MB 5.3 MB 최대 처리량

경쟁사와 메모리 비교

로거 기본 메모리 최대 메모리 할당/메시지
logger_system 1.8 MB 2.4 MB 0.12
spdlog 4.2 MB 7.1 MB 0.87
Boost.Log 12.4 MB 18.9 MB 2.34
glog 6.8 MB 10.2 MB 1.45
log4cxx 15.7 MB 24.3 MB 3.12

결론: logger_system은 **가장 낮은 메모리 풋프린트**와 **최소 할당**을 가짐


성능 회귀 기준

회귀 임계값:

  • 처리량: ±5% 허용
  • 지연시간: ±10% 허용 (더 변동성 있음)
  • 메모리: ±2% 허용

최종 업데이트: 2025-11-28 버전: 3.0.0


Made with ❤️ by 🍀☀🌕🌥 🌊