Diskuze: Měření času
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Tvůrce
Zobrazeno 12 zpráv z 12.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Vím, že na to asi nejsi z jiných jazyků zvyklý, ale .NET má perfektní referenci plnou příkladů - http://msdn.microsoft.com/…vs.110).aspx
Na něco podobného jsem si zvykl u C++ u funkcí ze souboru windows.h .
Většinou chceš naměřit sekundy. Cokoliv pod sekundu je nepřesné.
Také záleží na tom, co přesně chceš měřit. Pokud délku provádění alogritmu na nějakých datech, pak obvykle používám přibližně tuhle metodiku:
static void Main()
{
DateTime start;
int count;
start = DateTime.Now;
while ((DateTime.Now - start).TotalSeconds < 1)
MerenaMetoda();
start = DateTime.Now;
count = 0;
while ((DateTime.Now - start).TotalSeconds < 10)
{
MerenaMetoda();
count++;
}
double total = (DateTime.Now - start).TotalSeconds;
double time = time / count;
}
Většinou měřím na milisekundy. Když to změříš 12×, škrtneš nejhorší a nejlepší výsledek, spočítáš průměr, tak směrodatná odchylka vychází obvykle velmi nízká, v řádu desetin ms.
Pokud měříš běh interpreteru svého jazyka nějaký DateTime.Now pro tebe nebude vhodné. Bude pomalé. StopWatch bude o poznání lepší.
Každopádně nedával bych to do toho interpretru jako takového. Sám si zpomalíš jeho běh a zkreslíš vlastní výsledky. Dal bych časovou značku jako součást tvého jazyka a měřil na konci a začátku, ale zvenčí. Ne zevnitř.
Moc jsem nepocopil ten konec. Měření času chci použít na celý program(jak dlouho se interpretuje jeden kód) a na vybírání mezi kódy pro interpretaci jednotlivých příkazů.
Myslel jsem, že si chceš dát časový značky dovnitř toho int. např. do délky interpretace jednotlivých "intrukcí". Pokud to je jak říkáš, je to asi jedno.
Jak psal David Hartinger - ideální je třída StopWatch, interně ve win používá winapi QueryPerformance funkce, takže dokáže měřit čas zhruba na mikrosekundy (podle HW).
Zobrazeno 12 zpráv z 12.