<div dir="ltr"><div><div>Určitě lze použít nějakou formu indexu, ale je otázkou, jestli Vám to stojí za to. Možností může být například perfektní hashování, kdy si jednou za čas předzpracujete data a uložíte si je do hashovací tabulky s perfektní hash funkcí (libcmph) a metodou půlení intervalu budete prohledávat jen přírustky.<br><br></div>Další možností je např cuckoo hashing, který Vám garantuje, že najdete na dvě zahledání (ale vložení může trvat déle).<br><br></div><div>Záleží hlavně na tom, jak často hledáte oproti tomu, tak často přidáváte záznamy.<br></div>Honza<br></div><div class="gmail_extra"><br><div class="gmail_quote">Dne 12. února 2015 13:46 Marek Sembol <span dir="ltr"><<a href="mailto:hwm.land@gmail.com" target="_blank">hwm.land@gmail.com</a>></span> napsal(a):<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Predpokladam, ze v klic ma "hlucha mista" (nektere hodnoty jsou vynechany), jinak by to bylo prilis jednoduche:)<div>No mozna by se algoritmu dalo pomoct "inteligentnejsim" delenim intervalu, ale nebude to pak plne deterministicke (vyjimecne se muze hledani i zhorsit), zalezi jak "rovnomerne" jsou rozlozene klice. </div><div>Uvedu postup na prikladu. Mam treba 1000 zaznamu, prvni je 0, posledni 10000. Hledam cislo 1000. Hledam cislo v 1/10 meho rozsahu hodnot. Pokud budu vychazet z toho, ze klice jsou cca rovnomerne rozdelene, tak zkusim pokracovat v hledani ne na zaznamu 500 (polovina intervalu), ale zkusim zaznam rekneme 200 (ja vim, v desetine intervalu je 100, ale cim bliz k te 100 pujdu, tim vetsi je riziko, ze mi ne nevyjde a hledana hodnota bude v "nadpolovicnim" zbytku).</div><div><br></div><div>No a jeste vic by samozrejme pomohlo (pokud to jde) drzet si v pameti nejaky index (cim vice bodu, tim mensi interval prohledavam)</div><span class="HOEnZb"><font color="#888888"><div>Marek</div></font></span></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">2015-02-12 13:19 GMT+01:00 Martin Záruba <span dir="ltr"><<a href="mailto:swz@volny.cz" target="_blank">swz@volny.cz</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Váhal jsem, zda mail označit OT:, ale jde o data z PLC, tak snad to sem patří.<br>
Mám soubor dat, který se stále doplňuje daty, přečtenými z PLC. V současnosti má cca 9 000 000 vět. Každá věta má 8 byte klíč, podle kterého je setříděn a 48 byte data, takže na disku cca 480MB . Pro nalezení potřebné věty nyní používám půlení intervalu. Existuje nějaká jiná efektivnější forma hledání? Nyní je na to třeba cca 24 skoků.<span><font color="#888888"><br>
<br>
-- <br>
<br>
Martin Záruba<br>
<br>
______________________________<u></u>_________________<br>
HW-list mailing list - sponsored by <a href="http://www.HW.cz" target="_blank">www.HW.cz</a><br>
<a href="mailto:Hw-list@list.hw.cz" target="_blank">Hw-list@list.hw.cz</a><br>
<a href="http://list.hw.cz/mailman/listinfo/hw-list" target="_blank">http://list.hw.cz/mailman/<u></u>listinfo/hw-list</a><br>
</font></span></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
HW-list mailing list - sponsored by <a href="http://www.HW.cz" target="_blank">www.HW.cz</a><br>
<a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><br>
<a href="http://list.hw.cz/mailman/listinfo/hw-list" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
<br></blockquote></div><br></div>