Knihovna pro stromy v C

Martin `MJ' Mares mj na ucw.cz
Úterý Září 11 14:51:06 CEST 2007


Ahoj!

> Kratka verze dotazu: vite o nejake dobre knihovne pro implementaci
> stromu v C?

Ano, jednu takovou mame v libucw :-)

Viz treba http://mj.ucw.cz/tmp/holmes-libs-3.12-pre1.tar.gz, konkretne
lib/redblack.h (pripadne tam jsou take docela hezke hashovaci tabulky
v lib/hashtable.h).

> Podle me je hashovaci tabulka nepouzitelna - nevyuziva lokality dat
> a ruznych klicu je fakt hodne. Asi spis bude treba pouzit nejake
> stromy. Ale ted jake? Jedna moznost je red-black tree, druha asi
> B-stromy s velikosti uzlu optimalizovanou na velikost cache line (64 bajtu)?

Ja myslim, ze hashovaci tabulka by fungovala daleko lepe nez stromy --
u takhle velkych datovych struktur uz je totiz nejdulezitejsi meritko
frekvence cache-missu a slusne navrzena hashovaci tabulka bude mit
v prumeru konstantni pocet cache-missu na pristup, kdezto u stromu
bude logaritmicky.

Pokud je ruznych hodnot pomerne hodne, prekvapive dobre funguje setridit
si je radix-sortem (ten je opet velice pratelsky k cachim, pokud se zvoli
spravny pocet prihradek -- zrovna ted si s tim hraji a v nove verzi libucw
bude dabelsky rychly multi-threaded radix-sort).

> 	Co byste doporucili (krome: zkus si sam naimplementovat vice moznosti
> a zprofiluj si to :-) ?

Doporucil bych vyzkouset jak stromy, tak hashovaci tabulky z libucw
a zprofilovat si to :-)

				Have a nice fortnight
-- 
Martin `MJ' Mares                          <mj na ucw.cz>   http://mj.ucw.cz/
Faculty of Math and Physics, Charles University, Prague, Czech Rep., Earth
May the Source be with you...



Další informace o konferenci Linux