<div dir="ltr">Ano, tak nejak. <div>Kdyby clovek sel "na krev", tak ma v pameti vsechny hodnoty indexu (9M x 8 byte == 72M a casem narusta). Pokud tam bude "kazda tisici" hodnota jak pisete, tak nejdriv v pameti najdu interval a pak uz mam na prohledani na disku jen 1000 hodnot, coz je (pulenim intervalu) jen 10 cteni. V praxi jeste mene, protoze kazde cteni cte minimalne sektor tady minimalne 512 byte, coz je 9 zaznamu. Nektere disky pouzivaji tusim vetsi sektory.... S temito faktory jde pocitat (ale program to komplikuje)</div><div>Ale proste nejvic ziskate tim indexem (a nejmensimi naklady prace)</div><div>Marek</div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-02-12 14:06 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">Ano, to by mohla být dobrá metoda. Vzorky jsou sice nepravidelné, ale zase to není tak hrozné. Index v paměti si představujete tak, že by to bylo pole, kde by byl např. každý tisící index, takže by sloužil "k hrubému najetí" na správnou pozici?<br>
<br>
Martin Záruba<br>
<br>
Dne 12.2.2015 v 13:46 Marek Sembol napsal(a):<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
Predpokladam, ze v klic ma "hlucha mista" (nektere hodnoty jsou vynechany), jinak by to bylo prilis jednoduche:)<br>
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.<br>
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).<br>
<br>
No a jeste vic by samozrejme pomohlo (pokud to jde) drzet si v pameti nejaky index (cim vice bodu, tim mensi interval prohledavam)<br>
Marek<br>
<br></span>
2015-02-12 13:19 GMT+01:00 Martin Záruba <<a href="mailto:swz@volny.cz" target="_blank">swz@volny.cz</a> <mailto:<a href="mailto:swz@volny.cz" target="_blank">swz@volny.cz</a>>>:<span class=""><br>
<br>
Váhal jsem, zda mail označit OT:, ale jde o data z PLC, tak snad<br>
to sem patří.<br>
Mám soubor dat, který se stále doplňuje daty, přečtenými z PLC. V<br>
současnosti má cca 9 000 000 vět. Každá věta má 8 byte klíč, podle<br>
kterého je setříděn a 48 byte data, takže na disku cca 480MB . Pro<br>
nalezení potřebné věty nyní používám půlení intervalu. Existuje<br>
nějaká jiná efektivnější forma hledání? Nyní je na to třeba cca 24<br>
skoků.<br>
<br>
-- <br>
Martin Záruba<br>
<br>
______________________________<u></u>_________________<br></span><span class="">
HW-list mailing list - sponsored by <a href="http://www.HW.cz" target="_blank">www.HW.cz</a> <<a href="http://www.HW.cz" target="_blank">http://www.HW.cz</a>><br>
<a href="mailto:Hw-list@list.hw.cz" target="_blank">Hw-list@list.hw.cz</a> <mailto:<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>
<br>
<br>
<br>
<br></span><span class="">
______________________________<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>
</span></blockquote><div class="HOEnZb"><div class="h5">
<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>
</div></div></blockquote></div><br></div>