[C# 벤치마크] IntroArrayParam 사용방법
- C#/C# 문법
- 2021. 12. 29. 20:04
소개
- 안녕하세요. 오늘은 BenchMarkDotNet에 대해서 학습해 보려고 합니다.
- 그 중에서도, IntroArrayParam 관련 내용에 대해서 알아 보도록 하겠습니다.
IntroArrayParam
- [ArrayParam] 배열을 인수로 전달하여 벤치마크 성능을 테스트 할 수 있습니다.
- 예제 코드를 통해서 보여 드리도록 하겠습니다.
예제코드
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;
using System;
using System.Collections.Generic;
using System.Linq;
namespace BenchMarkTest
{
class Program
{
static void Main(string[] args)
{
var summary = BenchmarkRunner.Run<IntroArrayParam>();
}
}
[MemoryDiagnoser]
public class IntroArrayParam
{
[Benchmark]
[ArgumentsSource(nameof(Data))]
public int ArrayIndexOf(int[] array, int value)
{
return Array.IndexOf(array, value);
}
[Benchmark]
[ArgumentsSource(nameof(Data))]
public int ManualIndexOf(int[] array, int value)
{
for(int index =0; index < array.Length; index++)
{
if(array[index] == value)
{
return index;
}
}
return -1;
}
public IEnumerable<object[]> Data()
{
yield return new object[] { new int[] { 1, 2, 3, }, 4 };
yield return new object[] { Enumerable.Range(0, 100).ToArray(), 4 };
yield return new object[] { Enumerable.Range(0, 100).ToArray(), 101 };
}
}
}
실행 결과
| Method | array | value | Mean | Error | StdDev | Allocated |
|-------------- |----------- |------ |----------:|----------:|----------:|----------:|
| ArrayIndexOf | Int32[100] | 4 | 12.386 ns | 0.0110 ns | 0.0091 ns | - |
| ManualIndexOf | Int32[100] | 4 | 3.325 ns | 0.0078 ns | 0.0065 ns | - |
| ArrayIndexOf | Int32[3] | 4 | 12.047 ns | 0.0411 ns | 0.0364 ns | - |
| ManualIndexOf | Int32[3] | 4 | 2.002 ns | 0.0187 ns | 0.0175 ns | - |
| ArrayIndexOf | Int32[100] | 101 | 72.539 ns | 0.2683 ns | 0.2510 ns | - |
| ManualIndexOf | Int32[100] | 101 | 68.603 ns | 0.1868 ns | 0.1560 ns | - |
728x90
'C# > C# 문법' 카테고리의 다른 글
[C# 문법] C# 문자열 보간 이용하여 앞에 숫자 0 붙이는 방법 (0) | 2022.01.10 |
---|---|
[C# NuGet] C# 유효성 검증 FluentValidation NuGet 사용 방법 (0) | 2022.01.05 |
[C# 벤치마크] IntroCategories 사용방법 (0) | 2021.12.29 |
[C# 문법] 파일 경로에서 디렉토리 경로 가져오기 (0) | 2021.12.29 |
[C# 문법] 예외 필터 사용방법 (0) | 2021.12.28 |
이 글을 공유하기