[C# 벤치마크] C# BenchMarkDotNet ParamsSource 사용법

소개

  • 안녕하세요. 오늘은 BenchMarkDotNet에 대해서 학습해 보려고 합니다.
  • 그 중에서도, IntroParamsSource 관련 내용에 대해서 알아 보도록 하겠습니다.

참조


IntroParamsSource

  • [ParamsSource] Attribute를 사용하면 IEnumerable로 지정된 Collection의 값들을 사용하여 성능을 측정할 수 있습니다.
  • 이 값들은 조합하여 성능을 측정합니다.
  • 예제 코드를 작성하여 실행 결과를 확인해 보도록 하겠습니다.

예제코드

using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;
using System.Collections.Generic;
using System.Threading;

namespace BenchMarkTest
{
    class Program
    {
        static void Main(string[] args)
        {
            var summary = BenchmarkRunner.Run<IntroParamsSource>();
        }
    }

    [MemoryDiagnoser]
    public class IntroParamsSource
    {
        [ParamsSource(nameof(ValuesForA))]
        public int A { get; set; }

        [ParamsSource(nameof(ValuesForB))]
        public int B;

        public IEnumerable<int> ValuesForA => new[] { 100, 200, 300, 400, 500 };

        public static IEnumerable<int> ValuesForB() => new[] { 10, 20, 30, 40 };

        [Benchmark]
        public void BenchMark() => Thread.Sleep(A + B + 10);
    }
}

실행 결과

  • 위의 예제를 기준으로, int A는 100, 200, 300, 400, 500 이 설정되며, int B는 10, 20, 30, 40 값이 설정됩니다.

728x90

이 글을 공유하기

댓글

Designed by JB FACTORY