NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Michal Žůrek - misaz:27.5.2015 20:01

Ahoj,
vítám Vás u minisoutěže Machr, tentokrát na Algoritmy. Vašim úkolem bude naprogramovat benchmark disku. Jedná se o to, že aplikaci zadáte písmeno jednotky a ona vypočte a změří jak je disk rychlý (nebo pomalý) při čtení i zápisu. Kvůli objektivitě budu testovat USB 2 flashdisk se kterým žádná jiná aplikace nebude pracovat. Disk můžete i obodovat, ale (abychom mohli srovnávat přesnost) vypište i naměřenou hodnotu v Mb/s. Program by neměl testovat zařízení dlouho. Max únosnou dobu stanovme na 1 minutu, v případě že budete dělat s GUI, zobrazte alespoň nějaký progressbar.

Abychom machrovi vrátili jednu z jeho bývalých vlastností, je tento machr na algoritmy omezen pouze na C#. Pokud C# neumíte, nevadí, je nejlepší čas zkusit si v něm něco napsat. Algoritmus je všude stejný, rozdílný je jen zápis zdrojového kódu, takže by to neměl být takový problém.

Řešení odevzdávejte v zazipované složce pojmenované po vašem Itnetwork nicku a odkaz odešlete buď <a href="http://­www.itnetwork­.cz/zpravy/3588">Mic­halu Žůrkovi</a> do PM nebo zde do vlákna.

Odkaz na kompletní pravidla: http://www.itnetwork.cz/…outezi-machr

Deadline je v sobotu 6.6.2015 v 16:00.

Editováno 27.5.2015 20:02
 
Odpovědět
27.5.2015 20:01
Avatar
Odpovídá na Michal Žůrek - misaz
Štefan Pružinský:27.5.2015 20:39

Máme použiť nejakú vstavanú knižnicu, alebo na to existuje nejaký algoritmus? V texte spomínaš algoritmus, avšak o ničom takom som nenašiel ani zmienku :( .

Nahoru Odpovědět
27.5.2015 20:39
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Odpovídá na Štefan Pružinský
Michal Žůrek - misaz:27.5.2015 20:39

ten máš vymyslet. Předpokládám že víte, že externí knihovny či hotová řešení jsou zakázané.

 
Nahoru Odpovědět
27.5.2015 20:39
Avatar
Odpovídá na Michal Žůrek - misaz
Štefan Pružinský:27.5.2015 20:43

Ale musíš použiť aspoň nejakú knižnicu na prácu s USB... Potrebuješ vedieť minimálne aktuálnu rýchlosť, a potom to cez nejaký Timer vypočítať...

Nahoru Odpovědět
27.5.2015 20:43
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Odpovídá na Štefan Pružinský
Michal Žůrek - misaz:27.5.2015 20:45

Použij jen to co má C# v základu. Mělo by to stačit.

 
Nahoru Odpovědět
27.5.2015 20:45
Avatar
Odpovídá na Michal Žůrek - misaz
Štefan Pružinský:27.5.2015 21:08

A System.IO použiť môžem?

Nahoru Odpovědět
27.5.2015 21:08
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Odpovídá na Michal Žůrek - misaz
Štefan Pružinský:27.5.2015 21:33

Napadol ma jeden spôsob:). Je JIT veľký časový sklz? Bude to vadiť?:)

Editováno 27.5.2015 21:33
Nahoru Odpovědět
27.5.2015 21:33
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Odpovídá na Štefan Pružinský
Michal Žůrek - misaz:27.5.2015 21:35

Nevím co vymýšlíš, ale na měření času použij asi nejlépe StopWatch, ty samozřejmě použít můžeš.

 
Nahoru Odpovědět
27.5.2015 21:35
Avatar
Odpovídá na Michal Žůrek - misaz
Štefan Pružinský:27.5.2015 21:36

Jasné StopWatch použijem. Rozmýšľam len ako obísť Just in Time compiling.

Nahoru Odpovědět
27.5.2015 21:36
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Odpovídá na Štefan Pružinský
Michal Žůrek - misaz:27.5.2015 21:38

no tak když chceš....

 
Nahoru Odpovědět
27.5.2015 21:38
Avatar
Nahoru Odpovědět
27.5.2015 21:39
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Odpovídá na Štefan Pružinský
Michal Žůrek - misaz:27.5.2015 21:41

pokud chceš, můžeš. Pokud nechceš, nemusíš.

Editováno 27.5.2015 21:42
 
Nahoru Odpovědět
27.5.2015 21:41
Avatar
Štefan Pružinský:27.5.2015 22:03

Prepáč, že otravujem, ale mám ešte poslednú otázku :` . Dĺžka behu File.Copy() je Writing speed fashky, alebo reading speed harddisku + writing speed flashky?

Editováno 27.5.2015 22:03
Nahoru Odpovědět
27.5.2015 22:03
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
dirtyjobs
Člen
Avatar
Odpovídá na Michal Žůrek - misaz
dirtyjobs:28.5.2015 10:45

Je možné použít vlastní dll nebo jiný vlastní soubor a použít ho jako embedded resource?

 
Nahoru Odpovědět
28.5.2015 10:45
Avatar
Odpovídá na dirtyjobs
Michal Žůrek - misaz:28.5.2015 12:57

pokud se nejedná o externí knihovnu, tak jo.

 
Nahoru Odpovědět
28.5.2015 12:57
Avatar
Odpovídá na Michal Žůrek - misaz
Štefan Pružinský:29.5.2015 21:37

Ahoj,
ten progress bar má ukazovať zmenu rýchlosti oproti predošlému meraniu?

Nahoru Odpovědět
29.5.2015 21:37
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Odpovídá na Štefan Pružinský
Michal Žůrek - misaz:29.5.2015 21:56

Ten progressbar má ukazovat, že se něco děje. Nevím jak to měříš, ale existují metody kdy něco děláš delší dobu a progressbar tam je proto aby to uživatel věděl. Ono přeci jen "Aplikace XYZ neodpovídá" není moc zajímavé.

Ale záleží na tobě, třeba to tobě v aplikaci vyhovuje jinak.

 
Nahoru Odpovědět
29.5.2015 21:56
Avatar
Odpovídá na Michal Žůrek - misaz
Štefan Pružinský:29.5.2015 22:09

Nie je to v cykle ani ničom podobnom, tým pádom to nemám ako volať...

Nahoru Odpovědět
29.5.2015 22:09
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Odpovídá na Štefan Pružinský
Michal Žůrek - misaz:29.5.2015 22:09

pokud tvůj program vyplivne výsledek do 2 sekund, tak to není tak důležité.

 
Nahoru Odpovědět
29.5.2015 22:09
Avatar
dirtyjobs
Člen
Avatar
Odpovídá na Michal Žůrek - misaz
dirtyjobs:1.6.2015 17:35

Tak posílám svůj program. Je ve složce Debug, ne Release. Megabity za sekundu tam sice skutečně udávají megabity za sekundu, ale to číslo není moc užitečné, protože třeba video se bude zapisovat úplně jinou rychlostí.

http://leteckaposta.cz/809476030

 
Nahoru Odpovědět
1.6.2015 17:35
Avatar
dirtyjobs
Člen
Avatar
Odpovídá na dirtyjobs
dirtyjobs:1.6.2015 18:30

Ten program kopíruje sám sebe, takže když je debugován, kopíruje jen vshost.

 
Nahoru Odpovědět
1.6.2015 18:30
Avatar
Štefan Pružinský:3.6.2015 18:01

Môžem použiť externú knižnicu na vytváranie grafov? WPF nič také natívne nemá :(.

Editováno 3.6.2015 18:02
Nahoru Odpovědět
3.6.2015 18:01
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Odpovídá na Štefan Pružinský
Michal Žůrek - misaz:3.6.2015 18:10

ne, napiš si svoji. Stačí nějaký jednoduchý, nemusí to mít 300 efektů a tak. Dá se to naprogramovat zhruba za hodinu.

 
Nahoru Odpovědět
3.6.2015 18:10
Avatar
Odpovídá na Michal Žůrek - misaz
Štefan Pružinský:3.6.2015 18:14

Tak dobre :) Aj tak som o tom rozmýšľal.

Editováno 3.6.2015 18:17
Nahoru Odpovědět
3.6.2015 18:14
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
nogare
Člen
Avatar
nogare:5.6.2015 10:39

http://leteckaposta.cz/470412835
Exe soubor je v Debug složce.
Při testu disku C, prosím spouštět jako správce

Nahoru Odpovědět
5.6.2015 10:39
Zkoušely jste to vypnout a zapnout?
Avatar
Petr Čech
Tvůrce
Avatar
Petr Čech:5.6.2015 18:35

Doba zápisu a čtení se ale pro různé velikosti souborů liší... (o stejné celkové velikosti)

Nahoru Odpovědět
5.6.2015 18:35
the cake is a lie
Avatar
Odpovídá na Petr Čech
Michal Žůrek - misaz:5.6.2015 22:38

Však to je na tobě, jak toto vychytáš. :)

 
Nahoru Odpovědět
5.6.2015 22:38
Avatar
Odpovídá na Michal Žůrek - misaz
Zdeněk Pavlátka:6.6.2015 10:42

Zadání pěkné, ale velmi špatná volba jazyka. C# má totiž zápis a čtení pouze s bufferem. Tzn. že neměříme přímo rychlost disku, ale i něco navíc. Pro tohle by byly mnohem lepší jazyky jako Java, C, C++.

Nahoru Odpovědět
6.6.2015 10:42
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na Zdeněk Pavlátka
Zdeněk Pavlátka:6.6.2015 13:08

Jdu se zúčastnit, snad jsem nenapsal moc velkou blbost / prasárnu (napsal jsem to za dnešní dopoledne). Umí to kreslit grafy, má to tři druhy testů (podle délky) a při spuštění to ukáže seznam dostupných disků. Výsledky to zaokrouhluje na 2 desetinná místa.

https://www.dropbox.com/…enchmark.zip?dl=0

Nahoru Odpovědět
6.6.2015 13:08
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
spixy16
Tvůrce
Avatar
Avatar
Štefan Pružinský:6.6.2015 15:44

Ahoj,
po týždni práce sa pripájam aj ja.
Funkcie aplikácie:

  • Aplikácia je napísaná objektovo.
  • Automaticky načítava zoznam diskov - dokáže ho aj aktualizovať
  • Výber veľkosti testovacieho súboru
  • Výber počtu testovacích cyklov
  • Priebeh sa zobrazuje na ProgressBare
  • Graf rýchlosti čítania a zápisu

V programe je použitá vlastná knižnica (library) na vytváranie grafov. Táto knižnica zatiaľ obsahuje len čiarový graf, postupne ju môžem doplniť o ďalšie druhy. Graf je plne prispôsobiteľný na ľubovoľnú veľkosť.
Link na knižnicu:https://www.dropbox.com/…BIb9BCawT_Ra?dl=0

Program:https://www.dropbox.com/…0R_WEAUn53fa?dl=0

Pre testovanie je potrebné v app.manifest zmeniť tento riadok:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

na tento:

<requestedExecutionLevel level="asInvoker" uiAccess="false" />

Ikonka programu je pod voľnou licenciou.
V kóde sa nachádzajú alternatívne spôsoby na meranie rýchlosti čítania/zápisu (sú zakomentované).

Nahoru Odpovědět
6.6.2015 15:44
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Štefan Pružinský:6.6.2015 15:49

Pridávam ešte screenshot.

Nahoru Odpovědět
6.6.2015 15:49
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Odpovídá na Zdeněk Pavlátka
Zdeněk Pavlátka:6.6.2015 15:53

Trochu jsem to vylepšil:

https://www.dropbox.com/…ark_v1_1.zip?dl=0

Přidal jsem nějaké komentáře do kódu pro lepší čitelnost, opravil jsem chybu v grafech a trochu je zlepšil.

Nahoru Odpovědět
6.6.2015 15:53
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Nahoru Odpovědět
6.6.2015 15:58
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
dirtyjobs
Člen
Avatar
dirtyjobs:6.6.2015 16:13

Heslo mám "2255"
http://leteckaposta.cz/809476030

 
Nahoru Odpovědět
6.6.2015 16:13
Avatar
Odpovídá na dirtyjobs
Zdeněk Pavlátka:6.6.2015 16:29

Ukazuje ti to příšerně velké hodnoty. A výpočet rychlosti máš dost podezřelý:

writingspeed = 120000/writingtime;
readingspeed = 120000/readingtime;

už jenom proto, že zapisuješ 15.něco MB, ale pro výpočet použiješ 120000 něčeho, dělíš to milisekundami a pak napíšeš MB/s

Nahoru Odpovědět
6.6.2015 16:29
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
dirtyjobs
Člen
Avatar
Odpovídá na Zdeněk Pavlátka
dirtyjobs:6.6.2015 16:44

Mají to být megabity, pokud má megabajt 8 megabitů, 1581000/time v milisekundách. Na flašce Kingston 32GB to ukazuje writing speed co je v dokumentaci, ale na druhé zase ne, tak nevím.

tam má být 15krát8krát1000/

Editováno 6.6.2015 16:45
 
Nahoru Odpovědět
6.6.2015 16:44
Avatar
Odpovídá na dirtyjobs
Zdeněk Pavlátka:6.6.2015 17:05

U mého flash disku to ukazuje mnohonásobek skutečné rychlosti i když to přepočítám z Mb/s na MB/s (10-násobek), což je podezřelé

Nahoru Odpovědět
6.6.2015 17:05
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
dirtyjobs
Člen
Avatar
dirtyjobs:6.6.2015 17:21

Vím, že jsem to zprasil, ale tato writing speed(obrázek) je stejná jako v dokumentaci, dokonce o něco nižší, čemuž bych věřil.

 
Nahoru Odpovědět
6.6.2015 17:21
Avatar
Michal Žůrek - misaz:6.6.2015 20:05

Výborně! Po delší době se někdo moji soutěže zúčastnil. V průběhu testování jsem si však musel zjistit teoretickou propustnost USB2.0 (fleška s kterou jsem testoval), protože někteří z přihlášených vypsaly vyšší hodnotu. :D Ona ta pomalá fleška nakonec asi není tak pomalá, jak v praxi je. :D

dirtyjobs
máš zajímavé GUI, možná až moc šedé. Zajímavě jsi si obarvil progress bar. Bohužel tvůj zajímavý výpočet přináší velmi úsměvné výsledky. Tvůj test mi řekl, že moje pomalá USB 2.0 fleška čte rychlostí 5,2 Gb/s, což fakt nečte, to je 10× (!) víc než dosahují drahé SSD. Kód je sice nahuštěný v jednom souboru, ale v každé části už od pohledu tuším co dělá, takže palec nahoru. Příště to ještě můžeš zkusit se třídami ať je to univerzálnější.

nogare (-5 bodů za nepojmenovaný soubor)
Tvoje řešení je má velmi pěkné a čisté GUI. Nicméně se už v popiscích objevuje čecho-angličtina (např. write a malý soubor). Nepoužil jsi žádný našeptávač dostupných pevných disků a když tam zadám neplatné písmeno vyhodí to neošetřenou výjimku. Test trvá docela dlouho a aplikace se mi u něj zasekla. Test vyplivl rozumné hodnoty, některým bych i věřil, ale v praxi stejně vídám jiné (řádově). Určitě však je hloupost, že moje pomalá USB2.0 fleska má rychlost čtení zhruba srovnatelnou s pomalejšími SSDčky (302,78 Mb/s). Kód máš psaný všechen v obsluze button1_click, máš tam (zbytečně) prázdnou obsluhu form_load a používáš nevýstižné názvy. Resp. netuším jaký význam mají proměnné b1, swr2 atd. Chtělo by to v tomto případě tedy, alespoň nějaký komentář, nebo na konci refaktorovat na ne-zkratkové názvy.

spixy16 (-5 bodů za nesprávný formát komprimované složky)
Zajímavě vyřešený máš už samotný začátek - výběr disku. Nemůže se stát, že někdo vybere špatný. Dokonce máš ošetřenou chybu při výběru CD-ROM (sakra, už mi dochází nápady jak to shodit :D). Nádherně máš vyřešení výběr kol a tvoje výsledky jsou skutečně přesné. Kód je objektový, lze vždy poznat hned na první pohled co, která část dělá. Formulář je čistý a jednoduchý. Škoda, že sis nepřečetl v jakém formátu se odesílá řešení.

stevkopr
Uživatelské rozhraní vypadá čistě, je jednoduché a přehledné. Graf je pěkný, ale nepřijde mi moc užitečný. Možná tlačítko R by mohlo mít třeba nějaký piktogram, protože R může znamenat více věcí. Měření zápisu je celkem přesné, bohužel zápis na mojí pomalé USB 2.0 flešce byl zhruba srovnatelný s SSD, což je někde řádově jinde. Vyhrál jsi si se všemi detaily okolo, což je super věc, hodí se to, na uživatele působí aplikace mnohem lépe. Kód je objektový, dobře komentovaný a perfektně jsi oddělil i graf.

Zdeněk Pavlátka
Máš asi nejlépe vymyšlené vybírání disku. Možná by to bylo trochu horší, kdybych měl těch disků třeba 10 nebo 15. Nezapomeň, že to nemusí být nutně disky, mohou to být třeba připojené oddíly a tak. Grafy jsou užitečné, výsledky přesné. U grafů by to chtělo vyzdvihnout o jaký graf se jedná (zvětšit nadpis) a nebylo by špatné třeba grafy pro reading sloučit do jednoho. Celkem jsem se v tom ztrácel co je co. V kódu jsem se nedostal k nalinkovanému souboru HardDiscTest (musel jsem ho nějak přesunovat). Kód je fajn, ale nebylo by na chybu volit nějaké výstižnější názvy proměnných, fakt vůbec netuším, co je proměnná p, par, rs. Máš tam i prázdné obsluhy událostí. Nebylo by špatné zvážit, oddělení vykreslování grafů do jiného projektu, tak jak to udělal stevkopr.

Placku si (ačkoliv jsem zvažoval více placek) odnáší spixy16, který řešení publikuje, potom zažádá <a href="http://­www.itnetwork­.cz/portfolio/355">správ­ce ocenění</a> o placku a naučí se vytvářet zazipované složky.

Gratuluji vítězi a doufám, že se brzy uvidíme u nějaké další soutěže. :)

Editováno 6.6.2015 20:06
Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
6.6.2015 20:05
Avatar
Odpovídá na Michal Žůrek - misaz
Štefan Pružinský:6.6.2015 20:31

Veľmi pekne ďakujem za ohodnotenie. :) Škoda, že si sa napokon nerozhodol pre viac placiek :D .
Inak, ako si sa dostal k takej vysokej hodnote u toho USB? Mne to dávalo takmer vždy reálne výsledky. K rýchlosti SSD som sa však u USB 2.0 nestretol nikdy. o_O Ešte raz ďakujem.

Edit: Inak to tlačidlo som zakomentoval, pretože som to v tej rýchlosti nešlo zfunkčniť.

Editováno 6.6.2015 20:33
Nahoru Odpovědět
6.6.2015 20:31
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Odpovídá na Štefan Pružinský
Michal Žůrek - misaz:6.6.2015 20:36

Já nevím jak ti to měří, když jsem to testoval tak mi to vypsalo 700 (a něco málo) co už si nepamatuju. Navíc ti ten graf nějak podezřele klesá (i u čtení, i u zápisu), to není normální chování. přikládám screenshot (700Mb mě nenapadlo screenshotovat), takže se musíš spokojit jen s 500. Vidíš tam i ten pokles. Z 500 na 200. Zápis je v poho, teď možná trochu nižší než normálně.

Editováno 6.6.2015 20:38
 
Nahoru Odpovědět
6.6.2015 20:36
Avatar
Štefan Pružinský:6.6.2015 20:37

Taktiež by som rád zablahoželal víťazovi. :)

Nahoru Odpovědět
6.6.2015 20:37
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Odpovídá na Michal Žůrek - misaz
Štefan Pružinský:6.6.2015 20:41

Ten pokles nie je o grafe, ale o nameranej rýchlosti... Graf iba ukáže nameranú rýchlosť. Nechápem prečo taká nízka hodnota. Skúšal som to na veľkom množstve kľúčov...

Nahoru Odpovědět
6.6.2015 20:41
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Odpovídá na Štefan Pružinský
Michal Žůrek - misaz:6.6.2015 20:43

já vím co ukazuje graf, ale ta fleška běžně pracuje na rychlosti okolo 20 Mb/s. 350 Mb/s je někde jinde, na tom začínají ty nejpomalejší SSD. Navíc ta ryhclost je víceméně konstantní, rozdíl 300 Mb/s je hodně.

Editováno 6.6.2015 20:43
 
Nahoru Odpovědět
6.6.2015 20:43
Avatar
Odpovídá na Štefan Pružinský
Michal Žůrek - misaz:6.6.2015 20:46

pro tvůj dobrý pocit jsem vyzkoušel i další flešku a výsledek stejný. Zajímavé je, že první výsledek mi vypíše vždycky 500.

 
Nahoru Odpovědět
6.6.2015 20:46
Avatar
Odpovídá na Michal Žůrek - misaz
Štefan Pružinský:6.6.2015 20:55

Vzdávam sa :D ...nechápem tomu o_O

Nahoru Odpovědět
6.6.2015 20:55
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Štefan Pružinský:6.6.2015 21:00

Len pre ilustráciu dávam screenshot. Na USB mi to dá maximum 80 MB/s pri rýchlosti čítania. :(

Nahoru Odpovědět
6.6.2015 21:00
Najefektívnejším spôsobom debuggingu je modlitba. :)
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 50 zpráv z 54.