Close Menu
Código Simples .NETCódigo Simples .NET
    Facebook X (Twitter) Instagram
    Trending
    • NewSQL em 2025: O Estado Atual, Tendências e o Futuro dos Bancos de Dados Relacionais Escaláveis
    • 12 Regras Essenciais para Reduzir a Latência de Aplicações
    • Cache Hit Ratio: Como uma Simples Métrica Pode Revolucionar sua Arquitetura
    • Como a Uber calcula o tempo estimado de chegada
    • 30 APIs Gratuitas para desenvolvedores
    • Por que escalar escrita é tão mais difícil do que escalar leitura?
    • MongoDB Analyzer para .NET: Visualize e otimize suas consultas de forma simples
    • Cardinalidade: O Conceito que Transforma o Desempenho de Bancos de Dados SQL e NoSQL
    Facebook X (Twitter) Instagram
    Código Simples .NETCódigo Simples .NET
    Código Simples .NETCódigo Simples .NET
    Home»Asp.net»Localizando anomalias de código com o MiniProfiler – Parte1

    Localizando anomalias de código com o MiniProfiler – Parte1

    Rodrigo FerreiraBy Rodrigo Ferreira18 de abril de 20174 Mins Read Asp.net
    Share
    Facebook Twitter LinkedIn WhatsApp Copy Link

         Seguindo a onda do meu último post que fala sobre o ReSharper, uma extensão para Visual Studio capaz de trazer melhorias para seu código, trago hoje uma ferramenta gratuita e open-source para análise em tempo real a performance da sua aplicação, o MiniProfiler. A ideia é aprender a instalar o MiniProfiler e executar nosso primeiro teste, na Parte 2 deste artigo iremos ver como utilizar o MiniProfiler para localizar anomalias no uso de recursos de banco em uma aplicação ASP.NET WebForms, lembrando que o profiler funciona para ASP.NET MVC, Ruby e Node.js também. Como utilizo o Entity Framework 6, o primeiro passo é instalar via NuGet o pacote base do MiniProfiler e o pacote do EF6+:

    • MiniProfiler – The core. Needed for any profiling (all of the packages below list this as a dependency)
    • MiniProfiler.EF6 – For profiling Entity Framework version 6+

    No terminal interno no Visual Studio(View > Package Manager Console), executaremos as liprofilernhas abaixo:

    PM> Install-Package MiniProfiler
    PM> Install-Package MiniProfiler.EF6

         O processo acima também pode ser realizado pela tela de gerenciamento do Nuget em seu projeto(Botão direito no csproj > Gerenciar pacotes Nuget). Feita a instalação das dependências, vamos dar um start no MiniProfiler em nossa aplicação e ver como ele apresenta os resultados:

    1. INCLUIR O CSS/JS NO ASPX PARA EXIBIR OS RESULTADOS

    miniprof1
    Linha adicionada na tag <head> da MasterPage.

         Caso o namespace StackExchange não seja localizado verifique se o Nuget instalou corretamente a ddl no seu projeto. Veja na aba “Package Manager Console” na imagem acima a execução de comando e a mensagem de instalação bem sucedida.

    2. ALTERAR O GLOBAL.ASAX.CS DA APLICAÇÃO

    Para que o profiler comece a coletar informações precisamos dar um Start nele:

    miniprof4
    Arquivo Global.asax com Start/Stop do MiniProfiler.

         A mesma ideia vale para parar a coleta, executamos um Stop. Veja que é feito um teste se a requisição é local, a ideia é ajudar a identificar problemas pontuais, se não tiver esse teste o profiler será exibido em produção para os usuários da aplicação.

    3. EXECUTANDO A APLICAÇÃO E VENDO OS RESULTADOS

         Ao executar seu projeto no Visual Studio, o navegador será aberto e será apresentado um item do lado esquerdo superior da tela inicial da aplicação. Inicialmente verá apenas um tempo referente a sua tela atual, na imagem abaixo vemos três tempos de carregamento em milisegundos pois naveguei por outras páginas.

    miniprof3
    Carregamento em milisegundos no canto esquerdo superior.

    Ao clicar no item da imagem acima, é exibido os detalhes da coleta que o profiler fez até o momento, observe que para a minha tela Default.aspx ele mostra os eventos do .NET e o tempo de carregamento dos mesmos. Como não tenho ainda nenhum método específico nesta página nada novo é apresentado. Vamos ver no próximo tópico como criar Steps(Passos) no MiniProfiler para capturar detalhes de métodos que estão causando dor de cabeça.

    miniprof2
    Detalhes mostrados ao clicar em algum item no canto esquerdo

    4. CRIANDO UM STEP EM UM TRECHO DE CÓDIGO

         Neste último tópico vou mostrar como registrar o tempo de execução em torno de um trecho de código específico, para isso vamos criar um Step(Passo) em volta do código. Na solução tenho uma biblioteca(Class Library) e C# com minha camada de negócio e nela uma classe Empresa com o método CalculaSaldoEmpresa.

    namespace BusinessLayer
    {
        public class Empresa
        {
           public void CalculaSaldoEmpresa()
           {
              for (int i = 0; i < 100; i++)
              {
                 Thread.Sleep(5);
              }
           }
        }
    }

         O método não faz nada de mais, um laço que vai de 0 a 99 e a cada passo aguarda 5ms, mas irá servir para nosso teste. Agora na tela Default.aspx.cs, instancio a classe Empresa e chamo o método que criamos:

    namespace MiniProfilerTeste
    {
        public partial class _Default : Page
        {
           protected void Page_Load(object sender, EventArgs e)
           {
              var profiler = MiniProfiler.Current;
              using (profiler.Step("CalculaSaldoEmpresa"))
              {
                 Empresa emp = new Empresa();
                 emp.CalculaSaldoEmpresa();
              }
           }
        }
    }

         Veja no trecho de código acima que capturamos a analise corrente do profiler com MiniProfiler.Current e usamos ela abaixo para construir nosso Step dentro do using(boa prática!) , passando como parâmetro o nome que queremos que seja exibido no relatório que veremos em seguida. A imagem abaixo mostra o relatório do MiniProfiler na página ao executarmos a aplicação:

    miniprof5
    Abaixo da Default.aspx é mostrado o tempo de execução do nosso método CalculaSaldoEmpresa

         Vale lembrar que o próprio Visual Studio possui ferramentas nativas para profiling já faz algum tempo e são muito úteis, a ideia aqui é apenas mostrar uma outra alternativa leve, de fácil instalação e capaz de auxiliar na localização de problemas na sua solução. Na parte 2 deste artigo iremos tentar localizar problemas de chamadas de banco de dados em uma aplicação “na vera” ^_^.

    Até a próxima pessoal.

    asp.net miniprofiler profiler
    Share. Facebook Twitter LinkedIn Telegram WhatsApp Copy Link
    Rodrigo Ferreira
    • Website
    • X (Twitter)
    • LinkedIn

    Programador, apaixonado por games, empreendedor. Formado em Ciência da Computação com especialização em desenvolvimento para web, trabalhei com projetos .Net C#, NodeJs e Python nestes 10 anos de experiência no setor privado, em orgão públicos e na minha startup, o EstoqueMestre. http://rodrigoreisf.com.br

    Posts Relacionados

    O que é a Ecma e qual é sua relação com C#?

    C# Post do Leitor 29 de julho de 20247 Mins Read

    Boas práticas de criação, armazenamento e validação de senhas em .NET

    Asp.net Boas práticas 9 de julho de 20248 Mins Read

    UUID vs ULID: comparação e exemplos em C#

    C# 19 de junho de 20245 Mins Read
    Newsletter

    Digite seu endereço de e-mail para receber notificações de novas publicações por e-mail.

    Junte-se a 25mil outros assinantes
    Posts recentes
    • NewSQL em 2025: O Estado Atual, Tendências e o Futuro dos Bancos de Dados Relacionais Escaláveis
    • 12 Regras Essenciais para Reduzir a Latência de Aplicações
    • Cache Hit Ratio: Como uma Simples Métrica Pode Revolucionar sua Arquitetura
    • Como a Uber calcula o tempo estimado de chegada
    • 30 APIs Gratuitas para desenvolvedores
    Categorias
    • Arquitetura (14)
      • Testes (2)
    • Asp.net (120)
      • C# (89)
      • Mvc (13)
    • Banco de dados (90)
      • NoSql (58)
      • Sql (38)
    • Boas práticas (29)
      • Gestão & Produtividade (1)
      • Metodologias Ágeis (6)
    • Cursos (52)
    • Dicas (105)
    • Front-End (92)
    • IA (1)
    • Linux (6)
    • NodeJS (4)
    • Post do Leitor (9)
    • Python (5)
    • Seo (12)
    • Tecnologia (30)
      • ITIL (1)
      • Padrões de Projeto (4)
    • Testes (2)

    VEJA TAMBÉM

    Cursos
    12 de fevereiro de 20166 Mins Read

    1000 livros gratuitos sobre programação!

    Olha que dica bacana! A pagina só com livros sobre programação é mantida no GitHub…

    30 APIs Gratuitas para desenvolvedores

    Facebook X (Twitter) Instagram LinkedIn

    Type above and press Enter to search. Press Esc to cancel.

    Vá para versão mobile