Dica Rápida: BenchmarkDotNet의 테스트 테스트

올라!

Dica Rápida는 BenchmarkDotNet에서 다음 코드를 사용할 수 있습니다.

O BenchmarkDotNet é uma biblioteca disponível no NuGet que, uma vez adicionada ao seu projeto, te permite executar testes de desempenho de forma bem semelhante à de testes de unidade.

Vamos fazer um pequeno teste. Para isso, crie um novo projeto do tipo Console chamado Lab.Benchmark.Linq , adicione a biblioteca BenchmarkDotNet e, em seguida, crie um arquivo chamado LinqBenchmark.cs, e adicione o seguinte conteúdo:

using BenchmarkDotNet.Attributes;
using System;
using System.Linq;

namespace Lab.Benchmark.Linq
{
    public class LinqBenchmark
    {
        private const int capacity = 1000;
        private const int slice = 500;
        private int[] numbers = new int[capacity];

        [GlobalSetup]
        public void Setup()
        {
            for (int i = 0; i < capacity; i++)
                numbers[i] = i;
        }

        [Benchmark]
        public int LinqWhereAndFirst() =>
            numbers.Where(x => x > slice).First();

        [Benchmark]
        public int LinqFirst() =>
            numbers.First(x => x > slice);

        [Benchmark(Baseline=true)]
        public int NoLinq()
        {
            for (int i = 0; i < numbers.Length; i++)
                if (numbers[i] > slice)
                    return numbers[i];

            throw new InvalidOperationException();
        }
    }
}


Vamos verificar o conteúdo deste arquivo. Repare que temos um atributo chamadoGlobalSetup sobre o métodoSetup . Este atributo indica que antes da execução de qualquer 벤치마크 este método será executado.

Em seguida, temos métodos marcados com o atributo Benchmark , que indica que se trata de um método de medição (da mesma forma que um método de teste no XUnit, por exemplo, teria um atributo Fact ou Theory ). No último método temos, além do atributo Benchmark , a propriedade Baseline com value true . Isso significa que este será o baseline de nossa medição, ou seja, o ponto de referência para as demais execuções. 선택 사항에 대한 추가 정보는 베이스라인 포드리아에서 실행 방법을 실행하는 데 필요한 숫자를 추가하는 것입니다.

따라서 벤치마크를 실행하기 위해 최소로 필요한 항목입니다.

Vamos ao ao arquivo Program.cs, e substituir o o conteúdo original pelo seguinte:

using BenchmarkDotNet.Running;

namespace Lab.Benchmark.Linq
{
    static class Program
    {
        static void Main(string[] args)
        {
            BenchmarkRunner.Run<LinqBenchmark>();
        }
    }
}


Aqui temos apenas uma chamada para o métodoRun do executor de 벤치마크, especificando o tipoLinqBenchmark que criamos acima.

Para executar o 벤치마크, 기본 구성 o build do projeto paraRelease, e executar este programa sem habilitar o debugger(Ctrl +F5).

Se tudo deu certo, o resultado será semalhante ao da imagem abaixo.



E assim temos um teste de desempenho de três implementações distintas de um mesmo algoritmo.

Para maiores informações sobre a biblioteca, recomendo sua documentação no Github (em inglês).

Até a proxima!

좋은 웹페이지 즐겨찾기