간단한 메서드 실행 시간 측정기

2024. 7. 25. 14:44·C#
반응형

애플리케이션 성능 최적화를 위해서는 메서드 실행 속도를 측정하는 것이 중요합니다. 이를 위해 간단한 Profiler 클래스를 만들어 보았습니다.

#region
using System;
using System.Diagnostics;
#endregion

public static class Profiler
{
    public static T Time<T>(Func<T> method, string methodName)
    {
       Stopwatch sw     = Stopwatch.StartNew();
       T         result = method();
       sw.Stop();
       Console.WriteLine($"{methodName}: {sw.Elapsed.TotalMilliseconds} ms");
       return result;
    }

    public static void Time(Action method, string methodName)
    {
       Stopwatch sw = Stopwatch.StartNew();
       method();
       sw.Stop();
       Console.WriteLine($"{methodName}: {sw.Elapsed.TotalMilliseconds} ms");
    }
}

이 Profiler 클래스에는 두 가지 주요 메서드가 있습니다:

  1. Time<T>(Func<T> method, string methodName):
    • 반환 값이 있는 메서드의 실행 시간을 측정합니다.
    • Func<T> 델리게이트 형식의 메서드를 인자로 받아 실행하고, 실행 시간을 측정합니다.
    • 메서드 이름을 문자열로 받아 실행 시간 출력 시 사용합니다.
    • 메서드 실행 결과를 반환합니다.
  2. Time(Action method, string methodName):
    • 반환 값이 없는 메서드의 실행 시간을 측정합니다.
    • Action 델리게이트 형식의 메서드를 인자로 받아 실행하고, 실행 시간을 측정합니다.
    • 메서드 이름을 문자열로 받아 실행 시간 출력 시 사용합니다.
    • 메서드 실행 결과는 반환하지 않습니다.

이 Profiler 클래스를 사용하면 간단하게 메서드의 실행 시간을 측정할 수 있습니다. 예를 들어 다음과 같이 사용할 수 있습니다:

// 반환 값이 있는 메서드 실행 시간 측정
int result = Profiler.Time(() => SomeMethod(10), "SomeMethod");

// 반환 값이 없는 메서드 실행 시간 측정 
Profiler.Time(() => AnotherMethod(), "AnotherMethod");

이렇게 메서드 실행 시간을 측정하면 애플리케이션 성능 향상을 위한 병목 지점을 쉽게 찾을 수 있습니다. 성능 개선이 필요한 메서드를 빠르게 식별하고 최적화할 수 있습니다.

Profiler 클래스는 매우 간단한 구현이지만, 실제 애플리케이션에서 유용하게 사용될 수 있습니다. 시간 측정 로직을 별도의 유틸리티 클래스로 분리함으로써 코드의 가독성과 재사용성을 높일 수 있습니다.

저작자표시 비영리 변경금지 (새창열림)

'C#' 카테고리의 다른 글

데드락 문제와 해결 방법  (1) 2024.07.26
C# WinForms에서 콘솔 창 띄우기  (0) 2024.07.13
C# 프로그램 배포 시 소스 코드 보호하기 : 난독화와 패킹  (2) 2024.07.11
Directory : 디렉토리 관리  (0) 2024.07.09
Costura.Fody : 참조 DLL 라이브러리 하나로 합치기  (0) 2024.07.08
'C#' 카테고리의 다른 글
  • 데드락 문제와 해결 방법
  • C# WinForms에서 콘솔 창 띄우기
  • C# 프로그램 배포 시 소스 코드 보호하기 : 난독화와 패킹
  • Directory : 디렉토리 관리
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (687) N
      • 상품 추천 (192) N
      • MongoDB (4)
      • 하드웨어 (12) N
      • 일기장 (4)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • 파이썬 (12)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (50)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    Python
    unity
    셀레니움
    믈레코비타멸균우유
    파이썬
    리스트
    카페24리뷰이관
    쇼핑몰리뷰
    리뷰관리
    상품 리뷰 크롤링
    유니티
    cv2
    programmerlife
    긴유통기한우유
    devlife
    리뷰이관
    카페24리뷰
    스마트스토어리뷰
    programming101
    ipcamera
    appdevelopment
    codingtips
    스크립트 실행 순서
    스크립트 실행
    rtsp
    list
    learntocode
    C#
    라떼우유
    codingcommunity
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
간단한 메서드 실행 시간 측정기
상단으로

티스토리툴바