C#/기초

[C#] Time Check

딸기우유중독 2024. 1. 24. 10:52

 

#Log

https://dlsenfl.tistory.com/entry/C-Logger

 

[C#] Logger

# 시간 기록 https://dlsenfl.tistory.com/entry/C-Time-Check [C#] Time Check namespace PMCommon.Models; public class TimeSpent { private static Stopwatch stopwatch; private static bool isLogStarted = false; #if DEBUG public static string ProgramMode = "D

dlsenfl.tistory.com

 


 

TimeSpent.cs
0.00MB

namespace PMCommon.Models;

public class TimeSpent
{

    private static Stopwatch stopwatch;
    private static bool isLogStarted = false;
#if DEBUG
    public static string ProgramMode = "DebugMode";
#else
    public static string ProgramMode = "ReleaseMode";
#endif

    private static void TimeCheckMode()
    {
        if (!isLogStarted)
        {
            ILog log = LogManager.GetLogger("TimeCheck");
            log.Info("=================" + ProgramMode + "=================");
            isLogStarted = true;
        }
    }

    #region ByStartStop

    public static void StartStopwatch()
    {
        stopwatch = Stopwatch.StartNew();
    }
    public static void EndStopwatch()
    {
        stopwatch.Stop();
    }
    public static string GetStopwatchTime()
    {
        //TimeCheckMode();
        TimeSpan spentTime = TimeSpan.FromMilliseconds(stopwatch.ElapsedMilliseconds);
        //return Math.Round(spentTime.TotalSeconds, 2).ToString();
        return spentTime.TotalSeconds.ToString("0.00");
    }
    /// <summary>
    /// Write Start/End TimeSpan to Log.txt
    /// </summary>
    public static void WriteStopwatchTimeToLog()
    {
        EndStopwatch();
        MethodBase caller = new StackTrace().GetFrame(1).GetMethod();
        ILog log = LogManager.GetLogger(caller.DeclaringType);
        log.Info(caller.Name + ": " + GetStopwatchTime() + "(s)");
    }
    #endregion ByStartStop

    #region ByMethod

    /// <summary>
    /// ex) TimeCheck(()=> Func<T>, out value);
    /// <para> Return Func value && timespan && Write to Log.txt</para>
    /// </summary>
    /// <typeparam name="T">return Type</typeparam>
    /// <param name="action">return Method</param>
    /// <param name="timeSpan">out Check Method Run TimeSpan</param>
    /// <returns>Method return value</returns>
    public static T TimeCheck<T>(Func<T> action, out TimeSpan? timeSpan)
    {
        var stopwatch = Stopwatch.StartNew();
        var res = action.Invoke();
        stopwatch.Stop();
        timeSpan = stopwatch.Elapsed;
        ILog log = LogManager.GetLogger(action.Target.GetType());
        log.Info(action.GetMethodInfo().Name + ": " + GetWorkingTime(stopwatch) + "(s)");
        return res;
    }
    /// <summary>
    /// ex) TimeCheck(()=> Func<T>);
    /// <para> Return Func value && Write to Log.txt</para>
    /// </summary>
    /// <typeparam name="T">return Type</typeparam>
    /// <param name="action">return Method</param>
    /// <returns>Method return value</returns>
    public static T TimeCheck<T>(Func<T> action)
    {
        var stopwatch = Stopwatch.StartNew();
        var res = action.Invoke();
        stopwatch.Stop();
        ILog log = LogManager.GetLogger(action.Target.GetType());
        log.Info(action.GetMethodInfo().Name + ": " + GetWorkingTime(stopwatch) + "(s)");
        return res;
    }

    /// <summary>
    /// ex) TimeCheck(action, out value); || TimeCheck(()=>action(x), out value);
    /// <para> Return timeSpan && Write to Log.txt</para>
    /// </summary>
    /// <param name="action">void Method</param>
    /// <param name="timeSpan">out Check Method Run TimeSpan</param>
    public static void TimeCheck(Action action, out TimeSpan? timeSpan)
    {
        var stopwatch = Stopwatch.StartNew();
        action.Invoke();
        stopwatch.Stop();
        timeSpan = stopwatch.Elapsed;
        ILog log = LogManager.GetLogger(action.Target.GetType());
        log.Info(action.GetMethodInfo().Name + ": " + GetWorkingTime(stopwatch) + "(s)");
    }

    /// <summary>
    /// ex) TimeCheck(action); || TimeCheck(()=>action(x));
    /// <para>Write to Log.txt</para>
    /// </summary>
    /// <param name="action">void Method</param>
    public static void TimeCheck(Action action)
    {
        var stopwatch = Stopwatch.StartNew();
        action.Invoke();
        stopwatch.Stop();
        ILog log = LogManager.GetLogger(action.Target.GetType());
        log.Info(action.GetMethodInfo().Name + ": " + GetWorkingTime(stopwatch) + "(s)");
    }

    public static string GetWorkingTime(Stopwatch stopwatch)
    {
        //TimeCheckMode();
        TimeSpan spentTime = TimeSpan.FromMilliseconds(stopwatch.ElapsedMilliseconds);
        //return Math.Round(spentTime.TotalSeconds, 2).ToString("0.00");
        return spentTime.TotalSeconds.ToString("0.00");
    }

    #endregion ByMethod

}

 


 

 

https://codereview.stackexchange.com/questions/195823/measuring-method-execution-time

 

Measuring method execution time

I want to easily measure method's execution time. Of course instead of doing something like this: var timer = Stopwatch.StartNew(); DoSomething(); timer.Stop(); Console.WriteLine(timer.

codereview.stackexchange.com

 


 

728x90