Využij akce až 30% zdarma při nákupu e-learningu. Více informací .
Pouze tento týden sleva až 80 % na e-learning týkající se Javy
discount week 30
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 Čápka
Tým ITnetwork
Avatar
Odpovídá na Zdeněk Pavlátka
David Čápka:14.12.2013 10:12

Je tam třída Stopwatch.

Nahoru Odpovědět
14.12.2013 10:12
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Odpovídá na David Čápka
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 Čápka
Tým ITnetwork
Avatar
Odpovídá na Zdeněk Pavlátka
David Čápka: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
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Odpovídá na David Čápka
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
Redaktor
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
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
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
Redaktor
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
Redaktor
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
Redaktor
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
Luboš Běhounek Satik
Autoredaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Luboš Běhounek Satik:14.12.2013 17:35

Jak psal David Čápka - 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.