Ahoj,
diky za tipy. Urcite zvazim ten Heap;) Nicmene ted to resim pres
pole, coz je podle me nejrychlejsi dynamicky prvek v perlu (pevnou
strukturu pouzit nemuzu) jinak ne ze by me uz nekolikrat nenapadlo,
jestli by to nebylo jednodussi cele napsat v cecku, ale proste to
nejde;)
Jinak porovnavani v pameti je v pohode, dokonce jsem myslim docela
odladil to nacitani a vypisovani po blocich pomoci sysread, syswrite.
Teda porad nevim jestli by neslo lepe ten vystupni buffer, ktery delam
pres pole a join (spojovani pres tecku je docela pomale kvuli tomu ze
to pokazde delat realoc?) Ale zjisitl jsem, ze je docela velke
zpomaleni na funkcich ktere parsuji ty vstupni fajle (oni totiz nejsou
uplne stejne a musi se lehce unikovat - samozrejme bez regularnich
vyrazu).
Aktualne zkousim nacteni a porovnani pouze dvou fajli (tzn fakticky
jednoduchy if radek vetsi mensi), takze algoritmus velice jednoduchy,
nicmene je vetsi mnozstvi zapisu a datove narocnosti na disk. Zase
vyhoda ze by se to dalo poustet i paralelne. Zatim se to tvarilo
rychle, nez jsem to zacal parsovat, tim se to nekolikrat zpomalilo.
Ted to musim zkusit odprofilovat.
Mimochodem, musim doporucit profiler NYTProf (
http://search.cpan.org/
dist/Devel-NYTProf-4.03/lib/Devel/NYTProf.pm), jsem s nim dost
spokojen=)
On 26 čvn, 23:46, Jakub Kotrla <
ja...@kotrla.net> wrote:
> Ahoj,
> z hlediska algoritmu resis neco, cemu se rika vnejsi trideni, s tim, ze mas
> vyhodu v setridenosti filu.
> Problem je imho docela dobre prozkouman viz napr. -
http://en.wikipedia.org/wiki/Polyphase_merge_sort
> coz jsi defakto vymyslel taky - nacitani vice radku nez jednoho.
>
> Technicky to jen slevas, ze?
> Pokud by slo o zrychleni na urovni zmeny algoritmu, potrebujes datovou
> strukturu s co nejrychlejsim insertem a getMin.
> Myslim, ze na to jsou delane nejake haldy -
http://en.wikipedia.org/wiki/Heap_(data_structure)
> Nicmene naprogramovat je uz neni uplne trivialni, hadal bych z ena to bude
> neco na cpanu - naprhttp://
search.cpan.org/~jmm/Heap-0.80/lib/Heap.pm.
> Muze byt zajimave napsat si pouze implementaci takove struktury v C a pouzit
> ji pak v Perlu (nedelal jsem ale verim, ze to jde).
>
> Pokud bys mel napriklad pevny pocet vstupnich souboru, mohl by jsi trideni
> nahradit napevno vytvorenymi ify - defakto naimplementujes tridici sit.
> (takova vec se da generovat, takze technicky neni ruzny pocet vstupnich
> souboru zabranou).
>
> Samotne porovnani v pameti je rychle, jde o co nejmensi pocet cteni a zapisu
> - a pak to pujde az do minimalizace nejakych cache-miss, planovani disku a
> to uz clovek neovlivni.
>
> JK
>
> 2010/6/26 Jan Seidl <
unavenslun...@gmail.com>