본문 바로가기
강의 자료/고성능을 강조한 Java 멀티스레딩, 병행성 및 병렬 실행 프로그래밍

성능 및 지연 시간 최적화 개요

by 토니당 2025. 5. 25.
반응형

🕒 지연 시간 (Latency)

  • 정의: 하나의 작업을 완료하는 데 걸리는 시간 (단위: 시간)
  • 목표: 개별 작업이 빠르게 완료되도록 최적화

🔧 멀티스레드 환경에서의 고려 사항

  1. 스레드 수 결정
    • 일반적으로 CPU의 코어 수에 맞춰 스레드를 구성하는 것이 가장 효율적
    • 각 코어는 동시에 하나의 스레드를 처리할 수 있으므로 병행 처리가 가능
  2. 작업 분할과 병합 비용
    • 작업을 여러 개로 분할 후, 다시 병합하는 과정에서 오버헤드가 발생할 수 있음
    • 분할/병합의 비용이 지연 시간보다 커지면 오히려 성능 저하
  3. Context Switching 비용
    • 스레드 수가 코어 수를 초과하면 스케줄링에 따라 스레드가 번갈아 실행
    • 이 과정에서 문맥 교환(Context Switch) 발생 → 지연 시간 증가 및 CPU 효율 저하
  4. 작은 애플리케이션의 경우
    • 단순하거나 작업량이 적다면 굳이 멀티스레드를 사용하지 않아도 됨
    • 오히려 싱글스레드 환경이 더 효율적인 경우도 존재

📦 처리량 (Throughput)

  • 정의: 일정 시간 동안 처리한 전체 작업량 (단위: 작업 수/시간)
  • 목표: 주어진 시간 동안 가능한 많은 작업을 완료하도록 최적화

✅ 정리 요약

항목설명
Latency 개별 작업이 완료되는 시간, 지연을 최소화하는 것이 목적
Throughput 단위 시간당 처리하는 작업량, 전체 성능 향상이 목적
스레드 수 결정 보통 코어 수에 맞게 설정
Context Switching 스레드가 많을수록 발생 가능, 지연 시간 증가 원인
작업 분할 고려 병합 비용까지 포함해 전체 효율 고려해야 함
작은 앱 멀티스레드가 항상 정답은 아님, 오히려 오버헤드로 느려질 수 있음
반응형