[cstex] ceske rejstriky - vylepseni makra sort

petr-brezina at volny.cz petr-brezina at volny.cz
Tue Dec 22 15:32:29 CET 2009


Vazeni kolegove,

myslim, ze to, ze Petr Olsak udelal sveho vlastniho konicka, neni vubec
na skodu, naopak to spise problematice abecedniho razeni pomoci TeXu
prospelo. Diky jeho konickovi jsem vylepsil sveho konicka, ze ktereho
se nyni stal dostihovy kun. Od Olsakova konicka jsem si vypujcil myslenku
mergesort a po jiste uprave i prislusnou cast kodu, takze muj kun ted
padi jako o zavod. Nejenze se za jistych podminek zvysila rychlost makra
sort, nybrz se take znacne snizil pocet pomocnych souboru. Vylepseni
makra sort jsem realizoval formou zaplaty, ktera je ode dneska k dispozici
na mych internetovych strankach, http://www.volny.cz/petr-brezina/hap-c.html
(soubor sort-p.tex). Osvedci-li se, zaclenim ji nekdy v budoucnu primo
do souboru sort.tex (pak bude zapotrebi ocistit tento soubor od jiz
nepotrebneho balastu).

Uzivatel nacte zaplatu pomoci prikazu \input sort-p az pote, co nacte
soubor sort.tex, resp. index.tex; vse ostatni zustava z uzivatelskeho
hlediska pri starem, jen se pri razeni neobjevuji na obrazovce ta cisilka.
Vrele vsak doporucuji nastavit registr \bufsize na vyrazne vyssi hodnotu,
nez na jakou se nastavoval u puvodni verze makra sort; tim se abecedni
razeni vyrazne urychli; jako rozumne se jevi nastaveni \bufsize=500
(implicitni hodnota je pouhych 16). Tento registr, ktery urcuje pocet
polozek najednou tridenych v pameti TeXu, jistym zpusobem ovlivnuje
rychlost trideni. Je-li jeho hodnota prilis nizka nebo naopak prilis
vysoka, trideni se zpomaluje. Pri jednom experimentu se ukazalo, ze
s \bufsize=10000 bylo trideni trikrat pomalejsi nez s \bufsize=1000.
Bylo by hezke, kdyby nekdo dokazal presne objasnit vztah tohoto registru
k rychlosti trideni, a na zaklade toho stanovit jeho optimalni hodnotu.
Ja mohu nyni poskytnout jen nekolik zjisteni vyplyvajicich z pokusu
se seznamem citajicim deset tisic polozek: pri \bufsize=16 byla puvodni
verze makra sort kupodivu dvakrat rychlejsi nez vylepsena verze; puvodni
verze dosahovala nejvyssi rychlosti s \bufsize kolem 40; vylepsena verze
byla nejrychlejsi s \bufsize v rozmezi asi 500 az 1000; pomer obou nejvyssich
rychlosti byl dva ku peti ve prospech vylepsene verze; vylepsena verze
byla tedy schopna pracovat dvaapulkrat rychleji nez puvodni verze. Pri
pouziti jineho, mene standardniho seznamu polozek (pet tisic jich zacinalo
jednim pismenem a pet tisic druhym pismenem), byly pomery rychlosti
jine: pri \bufsize=16 byla rychlost puvodni i vylepsene verze makra
sort skoro stejna, a nejvyssi rychlost vylepsene verze byla dokonce
ctyrikrat vetsi nez rychlost puvodni verze.

Existuje jeden nevyznamny rozdil ve vysledku abecedniho razeni puvodni
verze makra sort a teto "vylepsene" verze. Jeslize se dve polozky lisi
pouze znaky, ktere nejsou obsazeny v tridici tabulce, anebo ridici sekvenci,
jsou z hlediska abecedniho razeni totozne, ackoli fakticky totozne nejsou,
napr. "\it kniha" a "\bf kniha"; vzajemne poradi takovych dvou polozek
bude pri pouziti povodniho makra sort a pri pouziti zaplaty jine. Jedna
se o nevyznamny rozdil, protoze by v praxi takovy pripad nemel vubec
nastat (do tridici tabulky by se mely zaradit vsechny znaky vyskytujici
se v polozkach, zdanlive shodne polozky je treba oindexovat). Pokud
by prece jen takovy pripad nastal, makro o tom vypise zpravu na obrazovku.

Souhrnem je tedy mozno rici, 1.~ze vylepsena verze makra sort dokaze
pri vhodnem nastaveni pracovat nekolikrat rychleji nez puvodni verze;
2.~ze zanecha po sobe jen dva pomocne soubory, zatimco puvodni verze
vytvarela tricet osm pomocnych souboru.

V zaverecnych poznamkach tohoto prispevku bych chtel rozptylit deziluzi
z meho makra.

Predne je treba uvedomit si, ze ty, ktere zajima makro sort jen na uzivatelske
urovni, nemusi nijak znepokojovat vnitrek makra a jazyk komentaru tam
uvedenych. Jak jiz nekteri pripomneli, cesky navod k makru sort, resp.
k balicku index vysel ve Zpravodaji 1/2007 a je dostupny na mych internetovych
strankach (soubory rejstrik.tex, rejstrik.pdf).

Pokud jde o obsah souboru sort.tex a index.tex, bylo otazkou, zda psat
komentare cesky, nebo cizojazycne. Puvodne jsem zamyslel, ze komentare
udelam ceske. Kdyz jsem ale uvazil, ze makro je pouzitelne pro abecedni
razeni i v jinych jazycich (napr. pro nemcinu, francouzstinu nebo polytonickou
rectinu), rozhodl jsem, ze komentare budou cizojazycne, aby makro mohlo
slouzit nejen ceskym a slovenskym zajemcum, ale take zajemcum z jinych
zemi. Volba padla na francouzstinu, ktera je uznavana jako mezinarodni
jazyk. Domnivam se, ze vetsina ceskych uzivatelu TeXu ma vysokoskolske
vzdelani, mnozi z nich prednaseji na univerzitach, nekteri jsou pracovniky
Akademie ved. Odhledneme-li od "turbostudentu" a jim podobnych individui,
tito lide se dnes a denne setkavaji s cizojazycnou odbornou literaturou;
rika se, ze pro uspesne absolvovani vysoke skoly v Ceske republice je
zapotrebi umet dva cizi jazyky. Jestlize tedy takove ucence vyvede z
miry par francouzskych komentaru, pak asi neni neco v poradku...

Ted jsou dlouhe zimni vecery, blizi se svatky. To je idealni cas pro
studium. Proc jej nevyuzit ke studiu francouzstiny? Nikoli kverulovanim,
nybrz pres obtize se clovek dostane ke hvezdam.

Cordialement,

Petr Brezina





More information about the csTeX mailing list