Jaki jest najlepszy sposób pomiaru czasu wykonania funkcji? [duplikat]

To pytanie ma już odpowiedź tutaj:

Oczywiście mogę zrobić i DateTime.Now.After - DateTime.Now.Before ale musi być coś bardziej wyrafinowanego.

Wszelkie wskazówki mile widziane.
Author: inspite, 2008-12-19

4 answers

 96
Author: ctacke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:25:02

Zdecydowanie radzę rzucić okiem na System.Diagnostics.Stopwatch

A kiedy rozejrzałem się po więcej o stoperze znalazłem tę stronę;

Uwaga na stoper

Pojawiła się inna możliwość

Proces.TotalProcessorTime

 44
Author: tafa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-19 13:23:04

Użyj profilera

Twoje podejście będzie jednak działać, ale jeśli szukasz bardziej wyrafinowanych podejść. Sugerowałbym użycie C # Profiler.

Ich zalety to:

  • możesz nawet uzyskać poziom instrukcji rozstanie
  • nie wymaga zmian w bazie kodu
  • Oprzyrządowanie zazwyczaj ma bardzo mniejsze koszty, dlatego można uzyskać bardzo dokładne wyniki.

Istnieje wiele dostępnych open-source jak również.

 11
Author: M.N,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-19 13:18:02

Tickcount jest dobry, jednak proponuję uruchomić go 100 lub 1000 razy i obliczyć średnią. Nie tylko czyni go bardziej mierzalnym - w przypadku naprawdę szybkich/krótkich funkcji, ale pomaga radzić sobie z pewnymi jednorazowymi efektami spowodowanymi przez obciążenie.

 4
Author: FooLman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-19 13:16:19