Avatar ·

Como medir o tempo de execução de um método em C#? Stopwatch e outras formas

Olá a todos! Sou um desenvolvedor C# iniciante e me deparei com a seguinte tarefa: preciso medir com precisão quanto tempo um determinado método leva para ser executado na minha aplicação. Por exemplo, estou escrevendo um parser de um arquivo grande ou realizando cálculos matemáticos complexos, e quero entender qual parte do código está lenta. Atualmente, faço assim: ```csharp DateTime start = DateTime.Now; // meu método Thread.Sleep(1000); // simulação de trabalho DateTime end = DateTime.Now; TimeSpan duration = end - start; Console.WriteLine($"Tempo: {duration.TotalMilliseconds} ms"); ``` Mas notei que os resultados às vezes variam: ora 1000 ms, ora 1002 ms, ora 998 ms. Também ouvi dizer que DateTime.Now não é muito preciso para esse tipo de medição. Me digam, como medir corretamente o tempo de execução de um método? É necessário considerar algumas particularidades, por exemplo, se o método é muito rápido (menos de um milissegundo) ou, ao contrário, demorado (minutos)? Existem ferramentas embutidas no .NET para isso? E como evitar que a própria medição influencie o resultado?