Projekt
„Nový hledač“
Zrychlování
Mám první výsledky zrychlování, a to pro stahování (viz níže)
Je zrychleno i odpovídání (také viz níže)
Další programy
Poznámky:
Pracuji s mými 22 WWW servery: http://www.jiznimorava.org/servery
Plus jsem přidal WWW adresu http://www.milionovastrankax.net
pro testování chyb stahování.
Na níže
uvedených printscreenes jsou doby ve Windows, PC mám dvoujádrový, jako WWW server používám OHTTPD.
Zatím je ovšem jen jeden uživatel, což jsem já..
Pokud na printscreenes vidíte dobu 00:00:00, je to
tím, že doby pod 1 milisekundu TimeSpan nezná.
Jak vidno,
věnuji zrychlování programů náležitou pozornost.
Začátek
Je hotova první verze.
Protože se bude stahovat a zpracovávat asi miliarda WWW stránek, musím ji
zrychlit.
Napsal jsem pomocné podprogramy, které mi ukazují, jakou dobu jednotlivé části
programů běží.
Tady je ukázka:

Worder je parsovací
program, který získává z WWW stránek jednotlivá slova a zjišťuje jejich
vlastnosti, např. počet výskytů na příslušné WWW stránce.
Kritický je zde zápis slov na disk, čas 10 sekund bude potřeba stáhnout na část
sekundy.
Minihledač se skládá z 11 programů, je to cca 10
tisíc řádků zdrojových kódů.
Zrychlování mi bude trvat asi měsíc.
Tak vznikne druhá verze, kterou naostro spustím pravděpodobně 1.7.2011.
Fronter a Downloadery (stahování)

To je první (dost dobrý) výsledek zrychlování.
Programy jsem zrychlil především:
- asynchronním stahováním
- prací se soubory pomocí StreamReader a StreamWriter (původně bylo TextReader
a TextWriter).
Stáhlo se 10 WWW stránek.
Průměrná doba stažení a jednoduchého parsování
stránky (v Downloaderu se parsují
pouze linky) je 0.16 sekundy,
z toho je cca 0.14 sekundy stahování a 0.02 sekundy parsování.
Předběžný výpočet: jeden Downloeder stáhne 1/0.016 =
6.25 stránek za sekundu.
100 Downloaderů stáhne 100 x 6.25 = 625 stránek za
sekundu.
Den má 86400 sekund, za den se tedy stáhne 86400 x 625 = 54000000 stránek.
Předpokládaný celkový počet českých WWW stránek je 1 miliarda (jsou to stránky
v doméně .cz plus stránky v češtině na
jiných doménách)..
Takže se bude stahovat 1000000000 / 54000000 = 18 dní.
Ovšem pak bude následovat zpracování, tedy vytažení textu a tagů
plus zpracování jiných objektů (množin komponent Internetu).
Nynější hrubý odhad kompletního stažení a zpracování českých WWW stránek je 1
měsíc, což odpovídá mému dřívějšímu odhadu.
Replyer
(odpovídání)
Printscreeny pro Replyer:
Před zrychlením:
images/20110620/replyer_1.jpg
images/20110620/replyer_2.jpg
images/20110620/replyer_3.jpg
Po zrychlení:
images/20110621/replyer_1.jpg
images/20110621/replyer_2.jpg
images/20110621/replyer_3.jpg
Srovnání, názorná ukázka zrychlení Replyeru
Před zrychlením
Celková doby a její části

Celková doba odpovědi je cca 2.5 sekundy.
Doby výpisu jednotlivých linků

Průměrná doba výpisu jednoho linku je cca 0.25 sekundy.
Doba výpisu linku http://www.alveo.name a její části

Doba výpisu tohoto linku je cca 0.8 sekundy.
Povšimněte si, prosím, řádku „Time of match in WWW page: 0.7968750“ (milisekund, tedy skoro sekunda).
Jedná se o vyhledávání částí zdrojového textu stránky, ve kterých se vyskytují
hledaná slova,
a to za účelem výpisu těchto částí pod link na stránce nalezených linků.
Jen pro jeden link to trvá skoro sekundu.
Příčinou je regulární výraz, resp následný match, která se příliš dlouho vyhodnocuje.
Po zrychlení
Celková doby a její části

Celková doba odpovědi je cca 0.3 sekundy.
Takže jsem celkovou dobu výpisu stáhl z původních 2.5 sekundy na nových 0.3
sekundy, tedy cca 8 krát.
Doby výpisu jednotlivých linků

Průměrná doba výpisu jednoho linku je cca 0.03 sekundy.
Takže jsem průměrnou dobu výpisu jednoho linku stáhl z původních 0.25 sekundy
na nových 0.03 sekundy, tedy cca 8 krát.
Doba výpisu linku http://www.alveo.name a její části

Doba výpisu tohoto linku je cca 0.03 sekundy.
Takže jsem dobu výpisu tohoto linku stáhl z původních 0.8 sekundy na nových
0.03 sekundy, tedy cca 27 krát(!).
Povšimněte si, prosím, řádku „Time of get regex
and match: 00.00.00“ (tedy
méně než milisekudna).
Ten odpovídá tomu řádku „Time of
match in WWW page:
0.7968750“ na předchozím printscreenu.
Parsování zdrojového textu stránky jsem zjednodušil a
použil jsem jiný regulární výraz,
takže jsem původní čas 0.78 sekundy stáhl prakticky na nulu.
Další programy
Jedničkou je vždy označen printscreen pro celkovou
dobu běhu programu.
Dalšími číslicemi jsou označeny printscreeny pro
podrobnější rozbory částí programů.
Výsledky zrychlování k datu 20.6.2011
images/20110620/linker_1.jpg
images/20110620/linker_2.jpg
images/20110620/ranker_1.jpg
images/20110620/ranker_2.jpg
images/20110620/leveler_1.jpg
images/20110620/leveler_2.jpg
images/20110620/seter_1.jpg
images/20110620/seter_2.jpg
images/20110620/worder_1_1.jpg (při prvním zápisu slov, tedy při parsování prvních stránek)
images/20110620/worder_1_2.jpg (při dalším zápisu slov, tedy při parsování dalších stránek)
images/20110620/worder_2.jpg
images/20110620/worder_3.jpg
images/20110620/worder_4.jpg
images/20110620/worder_5.jpg
images/20110620/sorter_1.jpg
images/20110620/sorter_2.jpg
images/20110620/sorter_3.jpg
images/20110620/setsorter_1.jpg
images/20110620/setsorter_2.jpg