NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Zdeněk Pavlátka:14.12.2013 9:37

Co bych měl použít pro měření délky běhu algoritmu (milisekundy)?

Odpovědět
14.12.2013 9:37
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Zdeněk Pavlátka
David Hartinger:14.12.2013 10:12

Je tam třída Stopwatch.

Nahoru Odpovědět
14.12.2013 10:12
New kid back on the block with a R.I.P
Avatar
Odpovídá na David Hartinger
Zdeněk Pavlátka:14.12.2013 10:15

A jak se používá?

Nahoru Odpovědět
14.12.2013 10:15
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Zdeněk Pavlátka
David Hartinger:14.12.2013 10:16

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

Nahoru Odpovědět
14.12.2013 10:16
New kid back on the block with a R.I.P
Avatar
Odpovídá na David Hartinger
Zdeněk Pavlátka:14.12.2013 10:19

Na něco podobného jsem si zvykl u C++ u funkcí ze souboru windows.h .

Nahoru Odpovědět
14.12.2013 10:19
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
coells
Tvůrce
Avatar
Odpovídá na Zdeněk Pavlátka
coells:14.12.2013 11:23

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;
}
 
Nahoru Odpovědět
14.12.2013 11:23
Avatar
Odpovídá na coells
Zdeněk Pavlátka:14.12.2013 11:26

Měřim běh interpreteru svého jazyka :D

Nahoru Odpovědět
14.12.2013 11:26
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na coells
Kit:14.12.2013 11:29

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.

Nahoru Odpovědět
14.12.2013 11:29
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Milan Křepelka
Tvůrce
Avatar
Milan Křepelka:14.12.2013 15:40

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ř.

 
Nahoru Odpovědět
14.12.2013 15:40
Avatar
Odpovídá na Milan Křepelka
Zdeněk Pavlátka:14.12.2013 15:54

Moc jsem nepocopil ten konec. 8| 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ů.

Nahoru Odpovědět
14.12.2013 15:54
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Milan Křepelka
Tvůrce
Avatar
Milan Křepelka:14.12.2013 16:16

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.

 
Nahoru Odpovědět
14.12.2013 16:16
Avatar
Odpovídá na Zdeněk Pavlátka
Luboš Běhounek Satik:14.12.2013 17:35

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).

Nahoru Odpovědět
14.12.2013 17:35
https://www.facebook.com/peasantsandcastles/
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 12 zpráv z 12.