1
resposta

[Dúvida] Retorno do Diagnostic.Stopwatch

Olá pessoas,

Estou com uma dúvida grande no resultado do código abaixo. O tempo retornado do "Diagnostic.Stopwatch()" não está fazendo sentido, podem me ajudar! Veja o resultado de minha máquina: 250500 Tempo gasto: 7

249500749500 Tempo gasto: 6

250500 Tempo gasto: 0

using System.Diagnostics;

var sw = new Stopwatch();

// Teste 1.
int soma = 0;
sw.Start();
for (int i = 1; i <= 1000; i++)
{
    if (i % 2 == 0)
    {
        soma += i;
    }
}
Console.WriteLine(soma);
sw.Stop();
Console.WriteLine($"Tempo gasto: {sw.ElapsedMilliseconds}\n");

// Teste 2.
long soma2 = 0;
sw.Restart();
for (long j = 2; j <= 999_000; j+=2)
{
    soma2 += j;
}
Console.WriteLine(soma2);
sw.Stop();
Console.WriteLine($"Tempo gasto: {sw.ElapsedMilliseconds}\n");

//  Teste 3.
int soma3 = 0;
sw.Restart();
for (int k = 1; k <= 1000; k++)
{
    if (k % 2 == 0)
    {
        soma3 += k;
    }
}
Console.WriteLine(soma3);
sw.Stop();
Console.WriteLine($"Tempo gasto: {sw.ElapsedMilliseconds}\n");

Console.ReadKey();
1 resposta

Alexandre,

Você pegou esse código em algum curso aqui na Alura? Não entendi estes contadores de "tempo gasto".

Experimente este código:

==========================================================

Stopwatch.Start Método

Referência

Definição

Inicia ou retoma a medição do tempo decorrido de um intervalo.

Exemplo

O exemplo a seguir demonstra como usar o método para iniciar um Start temporizador que mede o tempo de execução de um aplicativo.

using System;
using System.Diagnostics;
using System.Threading;
class Program
{
    static void Main(string[] args)
    {
        Stopwatch stopWatch = new Stopwatch();
        stopWatch.Start();
        Thread.Sleep(10000);
        stopWatch.Stop();
        // Get the elapsed time as a TimeSpan value.
        TimeSpan ts = stopWatch.Elapsed;

        // Format and display the TimeSpan value.
        string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
            ts.Hours, ts.Minutes, ts.Seconds,
            ts.Milliseconds / 10);
        Console.WriteLine("RunTime " + elapsedTime);
    }
}

https://learn.microsoft.com/pt-br/dotnet/api/system.diagnostics.stopwatch.start?view=net-7.0

==========================================================

Stopwatch.ElapsedMilliseconds Propriedade

Referência

Obtém o tempo total decorrido, medido pela instância atual, em milissegundos.

https://learn.microsoft.com/pt-br/dotnet/api/system.diagnostics.stopwatch.elapsedmilliseconds?source=recommendations&view=net-7.0

==========================================================

[]'s,

Fabio I.