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

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 : 디렉토리 관리
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (545)
      • 상품 추천 (54)
      • MongoDB (4)
      • 하드웨어 (9)
      • 일기장 (4)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • 파이썬 (128)
        • 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)
  • 인기 글

  • 태그

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

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

티스토리툴바