반응형
애플리케이션 성능 최적화를 위해서는 메서드 실행 속도를 측정하는 것이 중요합니다. 이를 위해 간단한 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
클래스에는 두 가지 주요 메서드가 있습니다:
Time<T>(Func<T> method, string methodName)
:- 반환 값이 있는 메서드의 실행 시간을 측정합니다.
Func<T>
델리게이트 형식의 메서드를 인자로 받아 실행하고, 실행 시간을 측정합니다.- 메서드 이름을 문자열로 받아 실행 시간 출력 시 사용합니다.
- 메서드 실행 결과를 반환합니다.
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# 프로그램 배포 시 소스 코드 보호하기 : 난독화와 패킹 (0) | 2024.07.11 |
Directory : 디렉토리 관리 (0) | 2024.07.09 |
Costura.Fody : 참조 DLL 라이브러리 하나로 합치기 (0) | 2024.07.08 |