Você faz benchmarks? BenchmarkDotNet - C# / .Net

Поделиться
HTML-код
  • Опубликовано: 18 сен 2024
  • Medir a performance de códigos ou algorítimos é algo que precisamos fazer constantemente, e uma das melhores maneiras de se fazer isto é com benchmarks! Seja na horá de analisar dois pacotes externos, ou memso na hora de comprara duas implementações, o BenchmarkDotNet ajuda muito nesta tarefa!
    Neste vídeo mostro e explico na prática sobre como configurar e usar este ferramenta sensacional.
    Espero que goste!
    E deixe seu comentário de sugestão para os próximos vídeos =)
    Segue nas outras redes sociais também:
    linktr.ee/wils...
    Link do projeto no Github:
    github.com/wil...
    Links uteis:
    BenchmarkDotNet:
    benchmarkdotne...
    #dotnet #csharp #benchmark #performance

Комментарии • 20

  • @marlonbraga
    @marlonbraga 5 месяцев назад +1

    👏👏👏

  • @diegolobo7952
    @diegolobo7952 8 месяцев назад +1

    Excelente vídeo, obrigado Wilson!

    • @wilsonneto-dev
      @wilsonneto-dev  8 месяцев назад +1

      Eu quem agradeço o feedback! Fico feliz em ter ajudado :)
      Abração e sucesso ai!

  • @joaoluiz4094
    @joaoluiz4094 4 месяца назад +1

    Vejo você nas classes do Elemar kkkk

  • @likesofc
    @likesofc 6 месяцев назад +1

    Muito bom, excelente, esse video que parece ser pequeno para voce, me ajudou bastante na evolução e ate mesmo procruar mais sobre o Benchmark

    • @wilsonneto-dev
      @wilsonneto-dev  6 месяцев назад +1

      Fico feliz demais pelo feedback :)
      Sucesso ai!

  • @cesargraciano1899
    @cesargraciano1899 Год назад +2

    Muito bom Wilson Neto, parabéns! Explicação muito boa. Já vou usar em alguns refactories que preciso fazer.

    • @wilsonneto-dev
      @wilsonneto-dev  Год назад +1

      Que massa, usa sim, eu gosto demais de usar no dia a dia... caro que não da para usar em tudo rs Mas em vários pontos eu deixo ali, até para conseguir ir aconpanhando e vendo como as alteraçoes impactam em performace e tal. Qualquer dúvida ai implementando, ou qualquer sugestão de conteúdo, manda ai! Abração e sucesso!

  • @carlossouza5478
    @carlossouza5478 Год назад +1

    Parabéns !!

  • @micaelcosta4892
    @micaelcosta4892 Год назад +1

    Excelente conteúdo

  • @vagnerwentz1189
    @vagnerwentz1189 Год назад +2

    Não entendi muito bem no regex compile, criar uma variável static, conseguiria explicar melhor? Mas um baita vídeo top! Parabéns

    • @wilsonneto-dev
      @wilsonneto-dev  Год назад

      Fala Vagner, obrigado demais pelo feedback! Fico feliz demais com ele =)
      Ali sobre a questão de jogar para uma static é porque o benchmark vai acabar rodando o método marcado com [Benchmark] diversas vezes, e se eu deixasse a regex como uma variavel comum ela seria recriada estas diversas vezes, só que o Compiled apesar de ser mais rapido para executar o Match da regex ele fica bem mais lendo na criaçao do objeto, se eu executasse a criacao em todas as iteraçoes do benchmark eu acabaria tendo uma performance até pior que sem o compiled. (Lembrando que o Compiled ainda ocorre em runtime e não em compile time...) Então criando ele estático e separado, ele será criado apenas uma vez e eu posso reusá-lo ali várias vezes sem a penalidade de criação.

  • @itamarribeiro8865
    @itamarribeiro8865 4 месяца назад +1

    Muito bom. Copiei aqui a solução, a única coisa que fiz diferente foi definir o regex fora do método como um atributo readonly - private readonly Regex regex = new Regex(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"); - Pra evitar a redefinição do mesmo objeto em um loop que não é uma boa prática e o Mean diminuiu pra 1/10.

    • @wilsonneto-dev
      @wilsonneto-dev  3 месяца назад +1

      Massa, com certeza, ali foi pelo exemplo, mas bem melhor mesmo

  • @PauloHenrique-vv4nf
    @PauloHenrique-vv4nf 10 месяцев назад +1

    Eu queria entender, no caso se eu precisar ter varios testes, não ficaria complexo tudo no program? como é feito em projeto real isso ?

    • @wilsonneto-dev
      @wilsonneto-dev  10 месяцев назад

      Bom dia Paulo! Perdão o delay na resposta, estava off estes dias... Bom, ótima pergunta, antes porém apenas uma ressalva, benchmark não é como testes unitários que precisamos por toda parte, podemos e devemos e4scolher o que fazer benchmark, o que realmente afeta performance e está no hot path do software. Dito isto, se ficar inviável ali na program de usar separados, uma outra abordagem seria usar o switcher:
      BenchmarkSwitcher.FromAssembly(typeof(Program).Assembly).Run(args);
      Ele já reconhecerá todos daquele assembly ou dos assemblies que passar, e também abrirá para receber parametros pela cli.
      Mas confesso que aqui acabamos por usar um a um mesmo, visto que temos cerca de uns 10 testes de benchmark apenas.
      Forte abraço!

    • @pensologofalo.
      @pensologofalo. 10 месяцев назад

      @@wilsonneto-dev obrigado pela resposta, uma outra dúvida eu posso usar o teste de benchmark em conjunto com teste unitário? Exemplo crio um decorator da class que irei testar, pego e coloco benchmark nos métodos dela e em outra classe crio os testes unitarios chamando o decorator, assim teste de forma como se fosse um teste unitário, cuspindo resultado de benchmark? O projeto ficaria como projeto de teste e não console applcation.

  • @annajones4191
    @annajones4191 Год назад +1

    Como sempre muito bom