Qual è il modo corretto di testare le prestazioni dei metodi?

3

Ho creato alcune classi per l'elaborazione e la convalida dei dati in xlsx e csv.

Tuttavia, sono curioso di testare quanto velocemente i metodi che ho scritto in C # per il sollevamento pesi sono.

Ecco a cosa sto pensando attualmente (scritto in C #):

// use this to test the performance of the method on files with various sizes

class FileProcessorPerformance
{
    private static Stopwatch sw;
    public static Stopwatch PerformanceSpeedStart()
    {
        sw = new Stopwatch();
        sw.Start();
        return sw;
    }

    public static void PerformanceSpeedEnd(Stopwatch stopwatch)
    {
        stopwatch.Stop();
        TimeSpan ts = stopwatch.Elapsed;
        string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10);
        Console.WriteLine("Run Time: " + elapsedTime);
    }
}

Un esempio di utilizzo sarebbe come:

Stopwatch sw = PerformanceSpeedStart()
ProcessData();
PerformanceSPeedEnd(sw);

Oltre ad usare la logica come la complessità temporale (big-O), come fanno le persone a confrontare le loro soluzioni, se lo fanno affatto?

Grazie!

    
posta ygongdev 17.06.2016 - 21:34
fonte

1 risposta

3

Per un singolo metodo semplice, l'utilizzo di un cronometro può funzionare bene. Per un codice più grande e più complesso, tuttavia, quello che vuoi è un profiler , uno strumento esterno che si collega al tuo programma come debugger, ti permette di eseguirlo e monitora per quanto tempo il codice che stai esecuzione in corso e dove viene speso il tempo.

Quando hai finito, ti fornisce un rapporto statistico che spiega dove stai trascorrendo la maggior parte del tuo tempo, che puoi in genere approfondire per ottenere una visione più dettagliata. I profiler possono fare un po 'di lavoro per capire come usarli, ma sono estremamente potenti per l'ottimizzazione delle prestazioni dopo aver imparato.

    
risposta data 17.06.2016 - 21:38
fonte

Leggi altre domande sui tag