{"id":428,"date":"2024-03-30T21:17:48","date_gmt":"2024-03-31T00:17:48","guid":{"rendered":"http:\/\/fabiobrandao.net.br\/blog\/?p=428"},"modified":"2024-03-30T21:21:51","modified_gmt":"2024-03-31T00:21:51","slug":"monitorando-sua-aplicacao-c-com-stopwatch","status":"publish","type":"post","link":"https:\/\/fabiobrandao.net.br\/blog\/csharp\/monitorando-sua-aplicacao-c-com-stopwatch\/","title":{"rendered":"Monitorando sua aplica\u00e7\u00e3o C# com Stopwatch"},"content":{"rendered":"<p>Monitorar o tempo de execu\u00e7\u00e3o de uma tarefa \u00e9 uma necessidade comum em v\u00e1rios projetos, seja para identifica\u00e7\u00e3o de problemas, gera\u00e7\u00e3o de logs ou utiliza\u00e7\u00e3o da informa\u00e7\u00e3o para fins de otimiza\u00e7\u00e3o.<\/p>\n<p>Uma das pr\u00e1ticas adotadas \u00e9 registrar o hor\u00e1rio de in\u00edcio e fim de execu\u00e7\u00e3o da tarefa e calcular o tempo decorrido. Apesar de uma pr\u00e1tica v\u00e1lida, a plataforma .NET possui a classe <strong>Stopwatch<\/strong> do namespace System.Diagnostics que simplifica esta atividade.<\/p>\n<p>Vejamos um exemplo de uso:<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\"> \r\nList&lt;Guid&gt; guids = new List&lt;Guid&gt;();\r\n\r\nStopwatch stopwatch = new Stopwatch();\r\nstopwatch.Start();\r\n\r\nfor (int i = 0; i &lt; 10; i++)\r\n{\r\n\tguids.Add(new Guid());\r\n}\r\n\r\nstopwatch.Stop();\r\nConsole.WriteLine($&quot;Tempo de execu\u00e7\u00e3o em ms: {stopwatch.Elapsed.TotalMilliseconds}&quot;);\r\n<\/pre>\n<p>O uso da classe <strong>Stopwatch<\/strong> \u00e9 muito simples. Primeiro criamos uma inst\u00e2ncia que ser\u00e1 utilizada para monitorar um conjunto de instru\u00e7\u00f5es. Utilizamos os m\u00e9todos Start() para dar in\u00edcio a contagem de tempo e Stop() para o encerramento, ou seja, o bloco de c\u00f3digo que ter\u00e1 a contagem de tempo ficar\u00e1 entre o Start() e o Stop().<\/p>\n<p>Em nosso exemplo escrevemos o total do tempo decorrido por meio da propriedade <strong>Elapsed<\/strong> da nossa inst\u00e2ncia, que neste caso est\u00e1 sendo obtida em milissegundos. Em resumo nosso exemplo apresentar\u00e1 o tempo decorrido para preencher uma lista com 10 Guids.<\/p>\n<p>Se quiser saber mais sobre a classe Stopwatch sugiro dar uma olhada em <a href=\"&quot;https:\/\/learn.microsoft.com\/pt-br\/dotnet\/api\/system.diagnostics.stopwatch?view=net-8.0\">https:\/\/learn.microsoft.com\/pt-br\/dotnet\/api\/system.diagnostics.stopwatch?view=net-8.0<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Monitorar o tempo de execu\u00e7\u00e3o de uma tarefa \u00e9 uma necessidade comum em v\u00e1rios projetos, seja para identifica\u00e7\u00e3o de problemas, gera\u00e7\u00e3o de logs ou utiliza\u00e7\u00e3o da informa\u00e7\u00e3o para fins de&#8230; <\/p>\n","protected":false},"author":1,"featured_media":360,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[82],"tags":[39,94,93],"class_list":["post-428","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-csharp","tag-c","tag-monitorando","tag-stopwatch"],"_links":{"self":[{"href":"https:\/\/fabiobrandao.net.br\/blog\/wp-json\/wp\/v2\/posts\/428","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fabiobrandao.net.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fabiobrandao.net.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fabiobrandao.net.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fabiobrandao.net.br\/blog\/wp-json\/wp\/v2\/comments?post=428"}],"version-history":[{"count":2,"href":"https:\/\/fabiobrandao.net.br\/blog\/wp-json\/wp\/v2\/posts\/428\/revisions"}],"predecessor-version":[{"id":430,"href":"https:\/\/fabiobrandao.net.br\/blog\/wp-json\/wp\/v2\/posts\/428\/revisions\/430"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fabiobrandao.net.br\/blog\/wp-json\/wp\/v2\/media\/360"}],"wp:attachment":[{"href":"https:\/\/fabiobrandao.net.br\/blog\/wp-json\/wp\/v2\/media?parent=428"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fabiobrandao.net.br\/blog\/wp-json\/wp\/v2\/categories?post=428"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fabiobrandao.net.br\/blog\/wp-json\/wp\/v2\/tags?post=428"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}